diff --git a/README.md b/README.md
index fcf1a174..22d43724 100644
--- a/README.md
+++ b/README.md
@@ -46,8 +46,12 @@ for information about how to create/update translations.
:es: Catalan
+:czech_republic: Czech
+
:cn: Chinese (simplified)
+:denmark: Danish
+
:netherlands: Dutch
:uk: English (U.K.)
@@ -60,12 +64,16 @@ for information about how to create/update translations.
:de: German
+:hungary: Hungarian
+
:it: Italian
:poland: Polish
:portugal: :brazil: Portuguese
+:ru: Russian
+
:mexico: :es: Spanish
:sweden: Swedish
diff --git a/babybuddy/settings/base.py b/babybuddy/settings/base.py
index 82cce703..a388420f 100644
--- a/babybuddy/settings/base.py
+++ b/babybuddy/settings/base.py
@@ -173,16 +173,20 @@ LOCALE_PATHS = [
LANGUAGES = [
("ca", _("Catalan")),
+ ("cs", _("Czech")),
("zh-hans", _("Chinese (simplified)")),
+ ("da", _("Danish")),
("nl", _("Dutch")),
("en-US", _("English (US)")),
("en-GB", _("English (UK)")),
("fr", _("French")),
("fi", _("Finnish")),
("de", _("German")),
+ ("hu", _("Hungarian")),
("it", _("Italian")),
("pl", _("Polish")),
("pt", _("Portuguese")),
+ ("ru", _("Russian")),
("es", _("Spanish")),
("sv", _("Swedish")),
("tr", _("Turkish")),
diff --git a/gulpfile.config.js b/gulpfile.config.js
index 9051a1c1..4a1f97ef 100644
--- a/gulpfile.config.js
+++ b/gulpfile.config.js
@@ -33,15 +33,19 @@ module.exports = {
'node_modules/bootstrap/dist/js/bootstrap.js',
'node_modules/moment/moment.js',
'node_modules/moment/locale/ca.js',
+ 'node_modules/moment/locale/cs.js',
+ 'node_modules/moment/locale/da.js',
'node_modules/moment/locale/de.js',
'node_modules/moment/locale/en-gb.js',
'node_modules/moment/locale/es.js',
'node_modules/moment/locale/fi.js',
'node_modules/moment/locale/fr.js',
'node_modules/moment/locale/it.js',
+ 'node_modules/moment/locale/hu.js',
'node_modules/moment/locale/nl.js',
'node_modules/moment/locale/pl.js',
'node_modules/moment/locale/pt.js',
+ 'node_modules/moment/locale/ru.js',
'node_modules/moment/locale/sv.js',
'node_modules/moment/locale/tr.js',
'node_modules/moment/locale/zh-cn.js',
@@ -51,15 +55,19 @@ module.exports = {
graph: [
'node_modules/plotly.js/dist/plotly-cartesian.js',
'node_modules/plotly.js/dist/plotly-locale-ca.js',
+ 'node_modules/plotly.js/dist/plotly-locale-cs.js',
'node_modules/plotly.js/dist/plotly-locale-de.js',
+ 'node_modules/plotly.js/dist/plotly-locale-da.js',
'node_modules/plotly.js/dist/plotly-locale-es.js',
'node_modules/plotly.js/dist/plotly-locale-fi.js',
'node_modules/plotly.js/dist/plotly-locale-fr.js',
+ 'node_modules/plotly.js/dist/plotly-locale-hu.js',
'node_modules/plotly.js/dist/plotly-locale-it.js',
'node_modules/plotly.js/dist/plotly-locale-nl.js',
'node_modules/plotly.js/dist/plotly-locale-pl.js',
'node_modules/plotly.js/dist/plotly-locale-pt-br.js',
'node_modules/plotly.js/dist/plotly-locale-pt-pt.js',
+ 'node_modules/plotly.js/dist/plotly-locale-ru.js',
'node_modules/plotly.js/dist/plotly-locale-sv.js',
'node_modules/plotly.js/dist/plotly-locale-tr.js',
'node_modules/plotly.js/dist/plotly-locale-uk.js',
diff --git a/locale/ca/LC_MESSAGES/django.mo b/locale/ca/LC_MESSAGES/django.mo
index 2a759d37..b3277d4f 100644
Binary files a/locale/ca/LC_MESSAGES/django.mo and b/locale/ca/LC_MESSAGES/django.mo differ
diff --git a/locale/ca/LC_MESSAGES/django.po b/locale/ca/LC_MESSAGES/django.po
index 3f0def61..41382f02 100644
--- a/locale/ca/LC_MESSAGES/django.po
+++ b/locale/ca/LC_MESSAGES/django.po
@@ -1,22 +1,20 @@
msgid ""
msgstr ""
-"Project-Id-Version: Baby Buddy\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-30 21:13+0000\n"
-"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: POEditor.com\n"
+"Project-Id-Version: Baby Buddy\n"
+"Language: ca\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: babybuddy/admin.py:12 babybuddy/admin.py:13
-#: babybuddy/templates/babybuddy/nav-dropdown.html:324
+#: babybuddy/templates/babybuddy/nav-dropdown.html:347
#: babybuddy/templates/babybuddy/user_settings_form.html:8
msgid "Settings"
msgstr "Opcions"
-#: babybuddy/admin.py:17 babybuddy/templates/babybuddy/nav-dropdown.html:89
+#: babybuddy/admin.py:17 babybuddy/templates/babybuddy/nav-dropdown.html:111
#: babybuddy/templates/babybuddy/user_settings_form.html:61
#: dashboard/templates/dashboard/child.html:4
#: dashboard/templates/dashboard/child.html:9
@@ -31,10 +29,8 @@ msgid "Refresh rate"
msgstr "Freqüència Actualització"
#: babybuddy/models.py:21
-msgid ""
-"If supported by browser, the dashboard will only refresh when visible, and "
-"also when receiving focus."
-msgstr ""
+msgid "This setting will only be used when a browser does not support refresh on focus."
+msgstr "Aquesta configuració només s'utilitzarà quan un navegador no admet l'actualització al focus."
#: babybuddy/models.py:28
msgid "disabled"
@@ -72,116 +68,31 @@ msgstr "15 min."
msgid "30 min."
msgstr "30 min."
-#: babybuddy/models.py:40
-msgid "Hide Empty Dashboard Cards"
-msgstr ""
-
-#: babybuddy/models.py:43
-msgid "Hide data older than"
-msgstr ""
-
-#: babybuddy/models.py:45
-msgid "This setting controls which data will be shown in the dashboard."
-msgstr ""
-
-#: babybuddy/models.py:51
-msgid "show all data"
-msgstr "mostra totes les dades"
-
-#: babybuddy/models.py:52
-msgid "1 day"
-msgstr "1 dia"
-
-#: babybuddy/models.py:53
-msgid "2 days"
-msgstr "2 dies"
-
-#: babybuddy/models.py:54
-msgid "3 days"
-msgstr "3 dies"
-
-#: babybuddy/models.py:55
-msgid "1 week"
-msgstr "1 setmana"
-
-#: babybuddy/models.py:56
-msgid "4 weeks"
-msgstr "4 setmanes"
-
#: babybuddy/models.py:63
msgid "Language"
msgstr "Idioma"
-#: babybuddy/models.py:69
-msgid "Timezone"
-msgstr "Zona Horària"
-
#: babybuddy/models.py:73
-#, python-brace-format
msgid "{user}'s Settings"
msgstr "{user}'s Opcions"
-#: babybuddy/settings/base.py:166
-msgid "Catalan"
-msgstr ""
-
-#: babybuddy/settings/base.py:167
-msgid "Chinese (simplified)"
-msgstr "Xinès"
-
-#: babybuddy/settings/base.py:168
-msgid "Dutch"
-msgstr "Alemany"
-
-#: babybuddy/settings/base.py:169
-msgid "English (US)"
-msgstr "Anglès (US)"
-
-#: babybuddy/settings/base.py:170
-msgid "English (UK)"
-msgstr "Anglès (UK)"
+#: babybuddy/settings/base.py:171
+msgid "English"
+msgstr "Anglès"
#: babybuddy/settings/base.py:171
msgid "French"
msgstr "Francès"
-#: babybuddy/settings/base.py:172
-msgid "Finnish"
-msgstr "Finlandès"
+#: babybuddy/templates/error/403.html:4 babybuddy/templates/error/403.html:7
+msgid "Permission Denied"
+msgstr "Permís Denegat"
-#: babybuddy/settings/base.py:173
-msgid "German"
-msgstr "Alemany"
-
-#: babybuddy/settings/base.py:174
-msgid "Italian"
-msgstr "Italià"
-
-#: babybuddy/settings/base.py:175
-msgid "Polish"
-msgstr "Polac"
-
-#: babybuddy/settings/base.py:176
-msgid "Portuguese"
-msgstr "Portuguès"
-
-#: babybuddy/settings/base.py:177
-msgid "Spanish"
-msgstr "Espanyol"
-
-#: babybuddy/settings/base.py:178
-msgid "Swedish"
-msgstr "Suec"
-
-#: babybuddy/settings/base.py:179
-msgid "Turkish"
-msgstr "Turc"
-
-#: babybuddy/templates/admin/base_site.html:4
-#: babybuddy/templates/admin/base_site.html:7
-#: babybuddy/templates/babybuddy/nav-dropdown.html:336
-msgid "Database Admin"
-msgstr "BBDD Admin"
+#: babybuddy/templates/403.html:12
+msgid "You do not have permission to access this resource.\n"
+" Contact a site administrator for assistance."
+msgstr "No teniu permís per accedir a aquest recurs.\n"
+" Contacteu amb l'administrador per obtenir ajuda."
#: babybuddy/templates/babybuddy/base.html:36
msgid "Home"
@@ -206,34 +117,32 @@ msgstr "Acceptar"
#: babybuddy/templates/babybuddy/messages.html:18
#: babybuddy/templates/babybuddy/user_settings_form.html:19
-#, python-format
msgid "Error: %(error)s"
msgstr "Error: %(error)s"
#: babybuddy/templates/babybuddy/messages.html:23
-#: babybuddy/templates/babybuddy/user_settings_form.html:26
-msgid "Error: Some fields have errors. See below for details."
-msgstr "Error: Alguns camps amb errors. Veure detalls."
+msgid "Error: Some fields have errors. See below for details. "
+msgstr "Error: alguns camps tenen errors. Vegeu a continuació per obtenir més informació. "
-#: babybuddy/templates/babybuddy/nav-dropdown.html:48 core/models.py:248
+#: babybuddy/templates/babybuddy/nav-dropdown.html:51 core/models.py:248
#: core/models.py:252
msgid "Diaper Change"
msgstr "Canvi Bolquers"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:54
-#: babybuddy/templates/babybuddy/nav-dropdown.html:259 core/models.py:312
+#: babybuddy/templates/babybuddy/nav-dropdown.html:57
+#: babybuddy/templates/babybuddy/nav-dropdown.html:281 core/models.py:312
#: core/models.py:316 core/templates/core/timer_detail.html:43
msgid "Feeding"
msgstr "Biberó"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:60
-#: babybuddy/templates/babybuddy/nav-dropdown.html:135 core/models.py:396
+#: babybuddy/templates/babybuddy/nav-dropdown.html:63
+#: babybuddy/templates/babybuddy/nav-dropdown.html:157 core/models.py:396
#: core/models.py:407 core/models.py:411 core/templates/core/note_list.html:29
msgid "Note"
msgstr "Nota"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:66
-#: babybuddy/templates/babybuddy/nav-dropdown.html:280
+#: babybuddy/templates/babybuddy/nav-dropdown.html:69
+#: babybuddy/templates/babybuddy/nav-dropdown.html:288
#: babybuddy/templates/babybuddy/welcome.html:42 core/models.py:467
#: core/models.py:468 core/models.py:471
#: core/templates/core/sleep_confirm_delete.html:7
@@ -243,8 +152,8 @@ msgstr "Nota"
msgid "Sleep"
msgstr "Dormir"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:72
-#: babybuddy/templates/babybuddy/nav-dropdown.html:293
+#: babybuddy/templates/babybuddy/nav-dropdown.html:81
+#: babybuddy/templates/babybuddy/nav-dropdown.html:301
#: babybuddy/templates/babybuddy/welcome.html:50 core/models.py:647
#: core/models.py:648 core/models.py:651
#: core/templates/core/timer_detail.html:59
@@ -256,15 +165,24 @@ msgstr "Dormir"
msgid "Tummy Time"
msgstr "Temps de panxa"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:96
-#: core/templates/timeline/timeline.html:4
-#: core/templates/timeline/timeline.html:7
-#: dashboard/templates/dashboard/child_button_group.html:9
-msgid "Timeline"
-msgstr "Línia de Temps"
+#: babybuddy/templates/babybuddy/nav-dropdown.html:87
+#: babybuddy/templates/babybuddy/nav-dropdown.html:193 core/models.py:673
+#: core/models.py:685 core/models.py:686 core/models.py:689
+#: core/templates/core/weight_confirm_delete.html:7
+#: core/templates/core/weight_form.html:13
+#: core/templates/core/weight_list.html:4
+#: core/templates/core/weight_list.html:7
+#: core/templates/core/weight_list.html:12
+#: core/templates/core/weight_list.html:29 reports/graphs/weight_change.py:19
+#: reports/graphs/weight_change.py:30
+#: reports/templates/reports/report_list.html:22
+#: reports/templates/reports/weight_change.html:4
+#: reports/templates/reports/weight_change.html:8
+msgid "Weight"
+msgstr "Pes"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:107
-#: babybuddy/templates/babybuddy/nav-dropdown.html:115 core/models.py:188
+#: babybuddy/templates/babybuddy/nav-dropdown.html:129
+#: babybuddy/templates/babybuddy/nav-dropdown.html:137 core/models.py:188
#: core/templates/core/child_confirm_delete.html:7
#: core/templates/core/child_detail.html:7
#: core/templates/core/child_form.html:13 core/templates/core/child_list.html:4
@@ -274,7 +192,7 @@ msgstr "Línia de Temps"
msgid "Children"
msgstr "Nadons"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:121 core/models.py:137
+#: babybuddy/templates/babybuddy/nav-dropdown.html:143 core/models.py:137
#: core/models.py:187 core/models.py:221 core/models.py:274 core/models.py:335
#: core/models.py:367 core/models.py:394 core/models.py:426 core/models.py:450
#: core/models.py:503 core/models.py:537 core/models.py:630 core/models.py:671
@@ -293,7 +211,7 @@ msgstr "Nadons"
msgid "Child"
msgstr "Nadó"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:129 core/models.py:143
+#: babybuddy/templates/babybuddy/nav-dropdown.html:151 core/models.py:143
#: core/models.py:240 core/models.py:304 core/models.py:343 core/models.py:373
#: core/models.py:408 core/models.py:430 core/models.py:458 core/models.py:511
#: core/models.py:677 core/templates/core/note_confirm_delete.html:7
@@ -302,112 +220,24 @@ msgstr "Nadó"
msgid "Notes"
msgstr "Notes"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:149
-msgid "Measurements"
-msgstr "Mides"
-
-#: babybuddy/templates/babybuddy/nav-dropdown.html:157 core/models.py:139
-#: core/models.py:151 core/models.py:152 core/models.py:155
-#: core/templates/core/bmi_confirm_delete.html:7
-#: core/templates/core/bmi_form.html:13 core/templates/core/bmi_list.html:4
-#: core/templates/core/bmi_list.html:7 core/templates/core/bmi_list.html:12
-#: core/templates/core/bmi_list.html:29 reports/graphs/bmi_change.py:19
-#: reports/graphs/bmi_change.py:30 reports/templates/reports/bmi_change.html:4
-#: reports/templates/reports/bmi_change.html:8
-msgid "BMI"
-msgstr "BMI"
-
-#: babybuddy/templates/babybuddy/nav-dropdown.html:163
-msgid "BMI entry"
-msgstr "Entrada BMI"
-
-#: babybuddy/templates/babybuddy/nav-dropdown.html:171 core/models.py:338
-#: core/models.py:351 core/models.py:352 core/models.py:355
-#: core/templates/core/head_circumference_confirm_delete.html:7
-#: core/templates/core/head_circumference_form.html:13
-#: core/templates/core/head_circumference_list.html:4
-#: core/templates/core/head_circumference_list.html:7
-#: core/templates/core/head_circumference_list.html:12
-#: core/templates/core/head_circumference_list.html:29
-#: reports/graphs/head_circumference_change.py:19
-#: reports/graphs/head_circumference_change.py:30
-#: reports/templates/reports/head_circumference_change.html:4
-#: reports/templates/reports/head_circumference_change.html:8
-#: reports/templates/reports/report_list.html:16
-msgid "Head Circumference"
-msgstr ""
-
-#: babybuddy/templates/babybuddy/nav-dropdown.html:177
-msgid "Head Circumference entry"
-msgstr ""
-
-#: babybuddy/templates/babybuddy/nav-dropdown.html:185 core/models.py:369
-#: core/models.py:381 core/models.py:382 core/models.py:385
-#: core/templates/core/height_confirm_delete.html:7
-#: core/templates/core/height_form.html:13
-#: core/templates/core/height_list.html:4
-#: core/templates/core/height_list.html:7
-#: core/templates/core/height_list.html:12
-#: core/templates/core/height_list.html:29 reports/graphs/height_change.py:19
-#: reports/graphs/height_change.py:30
-#: reports/templates/reports/height_change.html:4
-#: reports/templates/reports/height_change.html:8
-#: reports/templates/reports/report_list.html:17
-msgid "Height"
-msgstr "Alçada"
-
-#: babybuddy/templates/babybuddy/nav-dropdown.html:191
-msgid "Height entry"
-msgstr "Entrada Alçada"
-
-#: babybuddy/templates/babybuddy/nav-dropdown.html:199 core/models.py:506
-#: core/models.py:519 core/models.py:520 core/models.py:523
-#: core/templates/core/temperature_confirm_delete.html:7
-#: core/templates/core/temperature_form.html:13
-#: core/templates/core/temperature_list.html:4
-#: core/templates/core/temperature_list.html:7
-#: core/templates/core/temperature_list.html:12
-#: core/templates/core/temperature_list.html:29
-msgid "Temperature"
-msgstr "Temperatura"
-
-#: babybuddy/templates/babybuddy/nav-dropdown.html:205
-msgid "Temperature reading"
-msgstr "Lectura Temperatura"
-
-#: babybuddy/templates/babybuddy/nav-dropdown.html:213 core/models.py:673
-#: core/models.py:685 core/models.py:686 core/models.py:689
-#: core/templates/core/weight_confirm_delete.html:7
-#: core/templates/core/weight_form.html:13
-#: core/templates/core/weight_list.html:4
-#: core/templates/core/weight_list.html:7
-#: core/templates/core/weight_list.html:12
-#: core/templates/core/weight_list.html:29 reports/graphs/weight_change.py:19
-#: reports/graphs/weight_change.py:30
-#: reports/templates/reports/report_list.html:22
-#: reports/templates/reports/weight_change.html:4
-#: reports/templates/reports/weight_change.html:8
-msgid "Weight"
-msgstr "Pes"
-
-#: babybuddy/templates/babybuddy/nav-dropdown.html:219
+#: babybuddy/templates/babybuddy/nav-dropdown.html:199
msgid "Weight entry"
msgstr "Entrada Pes"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:233
+#: babybuddy/templates/babybuddy/nav-dropdown.html:255
msgid "Activities"
msgstr "Activitats"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:240
+#: babybuddy/templates/babybuddy/nav-dropdown.html:262
#: reports/graphs/diaperchange_lifetimes.py:27
msgid "Changes"
msgstr "Canvis"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:246
+#: babybuddy/templates/babybuddy/nav-dropdown.html:268
msgid "Change"
msgstr "Canvi"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:253
+#: babybuddy/templates/babybuddy/nav-dropdown.html:275
#: babybuddy/templates/babybuddy/welcome.html:34 core/models.py:313
#: core/templates/core/feeding_confirm_delete.html:7
#: core/templates/core/feeding_form.html:13
@@ -417,31 +247,15 @@ msgstr "Canvi"
msgid "Feedings"
msgstr "Biberons"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:267 core/models.py:437
-#: core/models.py:438 core/models.py:441
-#: core/templates/core/pumping_confirm_delete.html:7
-#: core/templates/core/pumping_form.html:13
-#: core/templates/core/pumping_list.html:4
-#: core/templates/core/pumping_list.html:7
-#: core/templates/core/pumping_list.html:12
-#: reports/templates/reports/pumping_amounts.html:4
-#: reports/templates/reports/pumping_amounts.html:8
-msgid "Pumping"
-msgstr ""
-
-#: babybuddy/templates/babybuddy/nav-dropdown.html:273
-msgid "Pumping entry"
-msgstr ""
-
-#: babybuddy/templates/babybuddy/nav-dropdown.html:286
+#: babybuddy/templates/babybuddy/nav-dropdown.html:294
msgid "Sleep entry"
msgstr "Entrada Son"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:299
+#: babybuddy/templates/babybuddy/nav-dropdown.html:307
msgid "Tummy Time entry"
msgstr "Entrada de temps de panxa"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:323
+#: babybuddy/templates/babybuddy/nav-dropdown.html:346
#: babybuddy/templates/babybuddy/user_list.html:17
#: babybuddy/templates/babybuddy/user_password_form.html:7
#: babybuddy/templates/babybuddy/user_settings_form.html:7 core/models.py:556
@@ -449,23 +263,23 @@ msgstr "Entrada de temps de panxa"
msgid "User"
msgstr "Usuari"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:325
+#: babybuddy/templates/babybuddy/nav-dropdown.html:348
msgid "Password"
msgstr "Clau"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:329
+#: babybuddy/templates/babybuddy/nav-dropdown.html:352
msgid "Logout"
msgstr "Tancar"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:332
+#: babybuddy/templates/babybuddy/nav-dropdown.html:355
msgid "Site"
msgstr "Lloc"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:333
+#: babybuddy/templates/babybuddy/nav-dropdown.html:356
msgid "API Browser"
msgstr "Navegador API"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:335
+#: babybuddy/templates/babybuddy/nav-dropdown.html:358
#: babybuddy/templates/babybuddy/user_confirm_delete.html:7
#: babybuddy/templates/babybuddy/user_form.html:13
#: babybuddy/templates/babybuddy/user_list.html:4
@@ -473,15 +287,19 @@ msgstr "Navegador API"
msgid "Users"
msgstr "Usuaris"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:338
+#: babybuddy/templates/babybuddy/nav-dropdown.html:250
+msgid "Backend Admin"
+msgstr "Admin Backend"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:361
msgid "Support"
msgstr "Suport"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:340
+#: babybuddy/templates/babybuddy/nav-dropdown.html:363
msgid "Source Code"
msgstr "Codi Font"
-#: babybuddy/templates/babybuddy/nav-dropdown.html:342
+#: babybuddy/templates/babybuddy/nav-dropdown.html:365
msgid "Chat / Support"
msgstr "Xat / Suport"
@@ -492,7 +310,6 @@ msgstr "Xat / Suport"
#: core/templates/timeline/_timeline.html:73
#: dashboard/templates/cards/feeding_day.html:43
#: dashboard/templates/cards/feeding_last_method.html:34
-#: dashboard/templates/cards/sleep_recent.html:43
#: dashboard/templates/cards/statistics.html:34
msgid "Previous"
msgstr "Anterior"
@@ -504,7 +321,6 @@ msgstr "Anterior"
#: core/templates/timeline/_timeline.html:80
#: dashboard/templates/cards/feeding_day.html:47
#: dashboard/templates/cards/feeding_last_method.html:38
-#: dashboard/templates/cards/sleep_recent.html:47
#: dashboard/templates/cards/statistics.html:38
msgid "Next"
msgstr "Següent"
@@ -560,12 +376,8 @@ msgstr "Esborrar"
#: core/templates/core/timer_confirm_delete.html:17
#: core/templates/core/tummytime_confirm_delete.html:14
#: core/templates/core/weight_confirm_delete.html:14
-#, python-format
-msgid ""
-"
Are you sure you want to delete %(object)s"
-"span>?
"
-msgstr ""
-"Segur que vols suprimir %(object)s?
"
+msgid "Are you sure you want to delete %(object)s?
"
+msgstr "Segur que vols suprimir %(object)s?
"
#: babybuddy/templates/babybuddy/user_confirm_delete.html:19
#: core/templates/core/bmi_confirm_delete.html:18
@@ -621,7 +433,6 @@ msgstr "Actualitza"
#: core/templates/core/timer_form.html:18
#: core/templates/core/tummytime_form.html:23
#: core/templates/core/weight_form.html:23
-#, python-format
msgid "Update %(object)s
"
msgstr "Actualitza %(object)s
"
@@ -651,7 +462,7 @@ msgstr "Actiu"
#: babybuddy/templates/babybuddy/user_list.html:23
#: core/templates/core/bmi_list.html:24 core/templates/core/bmi_list.html:38
#: core/templates/core/child_list.html:28
-#: core/templates/core/child_list.html:43
+#: core/templates/core/child_list.html:48
#: core/templates/core/diaperchange_list.html:24
#: core/templates/core/diaperchange_list.html:40
#: core/templates/core/feeding_list.html:24
@@ -689,6 +500,11 @@ msgstr "Canvia Clau"
msgid "User Settings"
msgstr "Opcions d'Usuari"
+#: babybuddy/templates/babybuddy/messages.html:23
+#: babybuddy/templates/babybuddy/user_settings_form.html:26
+msgid "Error: Some fields have errors. See below for details."
+msgstr "Error: Alguns camps amb errors. Veure detalls."
+
#: babybuddy/templates/babybuddy/user_settings_form.html:33
msgid "User Profile"
msgstr "Perfil d'Usuari"
@@ -715,10 +531,10 @@ msgid "Welcome to Baby Buddy!"
msgstr "Benvingut a Baby Buddy!"
#: babybuddy/templates/babybuddy/welcome.html:14
-msgid ""
-"Learn about and predict baby's needs without (as much) guess work "
-"by using Baby Buddy to track —"
-msgstr ""
+msgid "Learn about and predict baby's needs without\n"
+" (as much) guess work by using Baby Buddy to track —"
+msgstr "Apreneu i prediu les necessitats del nadó sense\n"
+" (tant) endevina que funciona utilitzant Baby Buddy per fer un seguiment de —"
#: babybuddy/templates/babybuddy/welcome.html:26 core/models.py:249
#: core/templates/core/diaperchange_confirm_delete.html:7
@@ -730,14 +546,19 @@ msgstr ""
msgid "Diaper Changes"
msgstr "Canvi Bolquers"
-#: babybuddy/templates/babybuddy/welcome.html:56
-msgid ""
-"As the amount of entries grows, Baby Buddy will help parents and caregivers "
-"to identify small patterns in baby's habits using the dashboard and graphs. "
-"Baby Buddy is mobile-friendly and uses a dark theme to help weary moms and "
-"dads with 2AM feedings and changings. To get started, just click the button "
-"below to add your first (or second, third, etc.) child!"
-msgstr ""
+#: babybuddy/templates/babybuddy/welcome.html:54
+msgid "As the amount of entries grows, Baby Buddy will help\n"
+" parents and caregivers to identify small patterns in baby's habits\n"
+" using the dashboard and graphs. Baby Buddy is mobile-friendly and\n"
+" uses a dark theme to help weary moms and dads with 2AM feedings and\n"
+" changings. To get started, just click the button below to add your\n"
+" first (or second, third, etc.) child!"
+msgstr "A mesura que creixi la quantitat d'entrades, Baby Buddy t'ajudarà\n"
+" pares i cuidadors per identificar petits patrons en els hàbits del nadó\n"
+" utilitzant el tauler i els gràfics. Baby Buddy és compatible amb mòbils i\n"
+" utilitza un tema fosc per ajudar les mares i els pares cansats amb l'alimentació a les 2 de la matinada i\n"
+" canvis. Per començar, només cal que feu clic al botó següent per afegir el vostre\n"
+" primer (o segon, tercer, etc.) fill!"
#: babybuddy/templates/babybuddy/welcome.html:68
#: core/templates/core/child_form.html:8 core/templates/core/child_form.html:18
@@ -745,48 +566,6 @@ msgstr ""
msgid "Add a Child"
msgstr "Afegir Nadó"
-#: babybuddy/templates/error/400.html:4 babybuddy/templates/error/400.html:7
-msgid "Bad Request"
-msgstr "Petició Invàlida"
-
-#: babybuddy/templates/error/403.html:4 babybuddy/templates/error/403.html:7
-msgid "Permission Denied"
-msgstr "Permís Denegat"
-
-#: babybuddy/templates/error/403.html:9
-msgid ""
-"You do not have permission to access this resource. Contact a site "
-"administrator for assistance."
-msgstr ""
-
-#: babybuddy/templates/error/403_csrf_bad_origin.html:14
-msgid "How to Fix"
-msgstr "Com arreglar"
-
-#: babybuddy/templates/error/403_csrf_bad_origin.html:15
-#, python-format
-msgid ""
-"Add %(origin)s to the CSRF_TRUSTED_ORIGINS
"
-"environment variable. If multiple origins are required separate with commas."
-msgstr ""
-
-#: babybuddy/templates/error/404.html:4 babybuddy/templates/error/404.html:7
-msgid "Page Not Found"
-msgstr "Pàgina no trobada"
-
-#: babybuddy/templates/error/404.html:9
-#, python-format
-msgid "The path %(request_path)s
does not exist."
-msgstr ""
-
-#: babybuddy/templates/error/500.html:4 babybuddy/templates/error/500.html:7
-msgid "Server Error"
-msgstr "Error Servidor"
-
-#: babybuddy/templates/error/base.html:14
-msgid "Return to Baby Buddy"
-msgstr "Tornar a Baby Buddy"
-
#: babybuddy/templates/registration/login.html:32
msgid "Login"
msgstr "Login"
@@ -811,10 +590,10 @@ msgstr "Accedir"
msgid "Password Reset"
msgstr "Restablir Clau"
-#: babybuddy/templates/registration/password_reset_confirm.html:13
-msgid ""
-"Oh snap! The two passwords did not match. Please try again."
-msgstr ""
+#: babybuddy/templates/registration/password_reset_confirm.html:12
+msgid "Oh snap! The\n"
+" two passwords did not match. Please try again.
"
+msgstr "Oh snap! Les claus no coincideixen. Repetir.
"
#: babybuddy/templates/registration/password_reset_confirm.html:22
msgid "Enter your new password in each field below."
@@ -829,67 +608,41 @@ msgstr "Restablir Clau"
msgid "Reset Email Sent"
msgstr "Email de restabliment enviat"
-#: babybuddy/templates/registration/password_reset_done.html:9
-msgid ""
-"We've emailed you instructions for setting your password, if an account "
-"exists with the email you entered. You should receive them shortly."
-msgstr ""
-
-#: babybuddy/templates/registration/password_reset_done.html:15
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: babybuddy/templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: babybuddy/templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-
-#: babybuddy/templates/registration/password_reset_email.html:8
-msgid "Your username, in case you’ve forgotten:"
-msgstr ""
-
-#: babybuddy/templates/registration/password_reset_email.html:10
-msgid "Thanks for using Baby Buddy!"
-msgstr ""
+#: babybuddy/templates/registration/password_reset_done.html:8
+msgid "We've emailed you instructions for setting your\n"
+" password, if an account exists with the email you entered. You\n"
+" should receive them shortly.
\n"
+" If you don't receive an email, please make sure you've\n"
+" entered the address you registered with, and check your spam\n"
+" folder.
"
+msgstr "Us hem enviat per correu electrònic instruccions per configurar el vostre\n"
+" contrasenya, si existeix un compte amb el correu electrònic que heu introduït. Vostè\n"
+" els hauríeu de rebre en breu.
\n"
+" Si no rebeu cap correu electrònic, assegureu-vos que ho heu fet\n"
+" introduïu l'adreça amb la qual us heu registrat i comproveu el vostre correu brossa\n"
+" carpeta.
"
#: babybuddy/templates/registration/password_reset_form.html:4
msgid "Forgot Password"
msgstr "Clau Oblidada"
-#: babybuddy/templates/registration/password_reset_form.html:9
-msgid ""
-"Enter your account email address in the form below. If the address is valid, "
-"you will receive instructions for resetting your password."
-msgstr ""
-
-#: babybuddy/views.py:43
-msgid "Forbidden"
-msgstr "No Permès"
-
-#: babybuddy/views.py:44
-msgid "CSRF verification failed. Request aborted."
-msgstr ""
+#: babybuddy/templates/registration/password_reset_form.html:8
+msgid "Enter your account email address in the\n"
+" form below. If the address is valid, you will receive instructions for\n"
+" resetting your password.
"
+msgstr "Introduïu l'adreça de correu electrònic del vostre compte a\n"
+" formulari a continuació. Si l'adreça és vàlida, rebreu instruccions per\n"
+" restablir la contrasenya.
"
#: babybuddy/views.py:102
-#, python-format
msgid "User %(username)s added!"
msgstr "Usuari %(username)s afegit!"
#: babybuddy/views.py:113
-#, python-format
msgid "User %(username)s updated."
msgstr "Usuari %(username)s actualitzat."
#: babybuddy/views.py:125
-#, python-brace-format
msgid "User {user} deleted."
msgstr "Usuari {user} esborrat."
@@ -905,20 +658,10 @@ msgstr "Clau API d'usuari regenerada."
msgid "Settings saved!"
msgstr "Opcions Gravades!"
-#: core/filters.py:11 core/models.py:96 core/models.py:115
-msgid "Tag"
-msgstr ""
-
#: core/forms.py:120
msgid "Name does not match child name."
msgstr "Nom no concorda amb nom nadó."
-#: core/forms.py:136
-msgid ""
-"Click on the tags to add (+) or remove (-) tags or use the text editor to "
-"create new tags."
-msgstr ""
-
#: core/models.py:28
msgid "Date can not be in the future."
msgstr "La data no pot ser futura."
@@ -933,49 +676,12 @@ msgstr "Durada massa llarga."
#: core/models.py:61
msgid "Another entry intersects the specified time period."
-msgstr ""
+msgstr "Una altra entrada talla el període de temps especificat."
#: core/models.py:75
msgid "Date/time can not be in the future."
msgstr "Data/Temps no pot ser futur."
-#: core/models.py:84 core/models.py:237
-#: core/templates/core/diaperchange_list.html:30
-msgid "Color"
-msgstr "Color"
-
-#: core/models.py:90
-msgid "Last used"
-msgstr ""
-
-#: core/models.py:97 core/templates/core/bmi_list.html:30
-#: core/templates/core/diaperchange_list.html:32
-#: core/templates/core/feeding_list.html:35
-#: core/templates/core/head_circumference_list.html:30
-#: core/templates/core/height_list.html:30
-#: core/templates/core/note_list.html:30 core/templates/core/sleep_list.html:32
-#: core/templates/core/temperature_list.html:30
-#: core/templates/core/tummytime_list.html:31
-#: core/templates/core/weight_list.html:30
-msgid "Tags"
-msgstr ""
-
-#: core/models.py:141 core/models.py:341 core/models.py:371 core/models.py:675
-#: core/templates/core/bmi_list.html:25
-#: core/templates/core/feeding_list.html:25
-#: core/templates/core/head_circumference_list.html:25
-#: core/templates/core/height_list.html:25
-#: core/templates/core/weight_list.html:25 reports/graphs/bmi_change.py:28
-#: reports/graphs/diaperchange_amounts.py:37
-#: reports/graphs/diaperchange_types.py:49 reports/graphs/feeding_amounts.py:70
-#: reports/graphs/feeding_duration.py:56
-#: reports/graphs/head_circumference_change.py:28
-#: reports/graphs/height_change.py:28 reports/graphs/pumping_amounts.py:60
-#: reports/graphs/sleep_pattern.py:153 reports/graphs/sleep_totals.py:59
-#: reports/graphs/tummytime_duration.py:51 reports/graphs/weight_change.py:28
-msgid "Date"
-msgstr "Data"
-
#: core/models.py:163
msgid "First name"
msgstr "Nom"
@@ -1030,11 +736,14 @@ msgstr "Verd"
msgid "Yellow"
msgstr "Groc"
-#: core/models.py:239 core/models.py:303 core/models.py:428
-#: core/templates/core/diaperchange_list.html:31
-#: core/templates/core/pumping_list.html:29
-msgid "Amount"
-msgstr "Quantitat"
+#: core/models.py:84 core/models.py:237
+#: core/templates/core/diaperchange_list.html:30
+msgid "Color"
+msgstr "Color"
+
+#: core/models.py:180
+msgid "Wet and/or solid is required."
+msgstr "Líquid o sòlit requerit."
#: core/models.py:276 core/models.py:453 core/models.py:543 core/models.py:632
msgid "Start time"
@@ -1060,14 +769,6 @@ msgstr "Llet Materna"
msgid "Formula"
msgstr "Fórmula"
-#: core/models.py:285
-msgid "Fortified breast milk"
-msgstr ""
-
-#: core/models.py:286
-msgid "Solid food"
-msgstr "Menjar Sòlid"
-
#: core/models.py:289 core/templates/core/feeding_list.html:30
msgid "Type"
msgstr "Tipus"
@@ -1084,25 +785,19 @@ msgstr "Pit esquerre"
msgid "Right breast"
msgstr "Pit dret"
-#: core/models.py:296
-msgid "Both breasts"
-msgstr "Ambdós Pits"
-
-#: core/models.py:297
-msgid "Parent fed"
-msgstr ""
-
-#: core/models.py:298
-msgid "Self fed"
-msgstr ""
-
#: core/models.py:301 core/templates/core/feeding_list.html:29
msgid "Method"
msgstr "Mètode"
-#: core/models.py:452
-msgid "Napping"
-msgstr "Migdiada"
+#: core/models.py:239 core/models.py:303 core/models.py:428
+#: core/templates/core/diaperchange_list.html:31
+#: core/templates/core/pumping_list.html:29
+msgid "Amount"
+msgstr "Quantitat"
+
+#: core/models.py:243
+msgid "Only \"Bottle\" method is allowed with \"Formula\" type."
+msgstr "Només es permet el mètode \"Ampolla\" amb el tipus \"Fórmula\"."
#: core/models.py:540 core/templates/core/timer_list.html:25
msgid "Name"
@@ -1122,7 +817,6 @@ msgid "Timers"
msgstr "Temporitzadors"
#: core/models.py:568
-#, python-brace-format
msgid "Timer #{id}"
msgstr "Temporitzador #{id}"
@@ -1130,24 +824,21 @@ msgstr "Temporitzador #{id}"
msgid "Milestone"
msgstr "Fita"
-#: core/templates/core/bmi_confirm_delete.html:4
-msgid "Delete a BMI Entry"
-msgstr "Esborra entrada BMI"
-
-#: core/templates/core/bmi_form.html:8 core/templates/core/bmi_form.html:17
-#: core/templates/core/bmi_form.html:27
-msgid "Add a BMI Entry"
-msgstr "Afegeix entrada BMI"
-
-#: core/templates/core/bmi_list.html:15
-msgid "Add BMI"
-msgstr "Afegeix BMI"
-
-#: core/templates/core/bmi_list.html:70
-#, fuzzy
-#| msgid "No bmi entries found."
-msgid "No BMI entries found."
-msgstr "Entrades BMI no trobades."
+#: core/models.py:141 core/models.py:341 core/models.py:371 core/models.py:675
+#: core/templates/core/bmi_list.html:25
+#: core/templates/core/feeding_list.html:25
+#: core/templates/core/head_circumference_list.html:25
+#: core/templates/core/height_list.html:25
+#: core/templates/core/weight_list.html:25 reports/graphs/bmi_change.py:28
+#: reports/graphs/diaperchange_amounts.py:37
+#: reports/graphs/diaperchange_types.py:49 reports/graphs/feeding_amounts.py:70
+#: reports/graphs/feeding_duration.py:56
+#: reports/graphs/head_circumference_change.py:28
+#: reports/graphs/height_change.py:28 reports/graphs/pumping_amounts.py:58
+#: reports/graphs/sleep_pattern.py:151 reports/graphs/sleep_totals.py:59
+#: reports/graphs/tummytime_duration.py:51 reports/graphs/weight_change.py:28
+msgid "Date"
+msgstr "Data"
#: core/templates/core/child_confirm_delete.html:4
msgid "Delete a Child"
@@ -1167,15 +858,15 @@ msgstr "Nascut"
msgid "Age"
msgstr "Edat"
-#: core/templates/core/child_list.html:15
-msgid "Add Child"
-msgstr "Afegir Nadó"
+#: core/templates/timeline/_timeline.html:38
+msgid "%(since)s ago (%(time)s)"
+msgstr "%(since)s ago (%(time)s)"
#: core/templates/core/child_list.html:27
msgid "Birth Date"
msgstr "Data Naixement"
-#: core/templates/core/child_list.html:62
+#: core/templates/core/child_list.html:67
msgid "No children found."
msgstr "Nadons no trobats."
@@ -1200,18 +891,14 @@ msgstr "Afegir Canvi Bolquer"
msgid "Add"
msgstr "Afegir"
-#: core/templates/core/diaperchange_list.html:15
-msgid "Add Diaper Change"
-msgstr "Afegir canvi Bolquer"
-
-#: core/templates/core/diaperchange_list.html:29
-msgid "Contents"
-msgstr "Continguts"
-
#: core/templates/core/diaperchange_list.html:77
msgid "No diaper changes found."
msgstr "Canvi de Bolquers no trobat."
+#: core/templates/core/diaperchange_list.html:63
+msgid "Add a Change"
+msgstr "Afegir Canvi"
+
#: core/templates/core/feeding_confirm_delete.html:4
msgid "Delete a Feeding"
msgstr "Esborra Alimentacions"
@@ -1225,10 +912,6 @@ msgstr "Actualitza Alimentacions"
msgid "Add a Feeding"
msgstr "Afegeix Alimentació"
-#: core/templates/core/feeding_list.html:15
-msgid "Add Feeding"
-msgstr "Afegir alimentació"
-
#: core/templates/core/feeding_list.html:33
msgid "Amt."
msgstr "Quant."
@@ -1237,42 +920,6 @@ msgstr "Quant."
msgid "No feedings found."
msgstr "Sense Alimentacions."
-#: core/templates/core/head_circumference_confirm_delete.html:4
-msgid "Delete a Head Circumference Entry"
-msgstr ""
-
-#: core/templates/core/head_circumference_form.html:8
-#: core/templates/core/head_circumference_form.html:17
-#: core/templates/core/head_circumference_form.html:27
-msgid "Add a Head Circumference Entry"
-msgstr ""
-
-#: core/templates/core/head_circumference_list.html:15
-msgid "Add Head Circumference"
-msgstr ""
-
-#: core/templates/core/head_circumference_list.html:70
-msgid "No head circumference entries found."
-msgstr ""
-
-#: core/templates/core/height_confirm_delete.html:4
-msgid "Delete a Height Entry"
-msgstr "Esborra entrada Pes"
-
-#: core/templates/core/height_form.html:8
-#: core/templates/core/height_form.html:17
-#: core/templates/core/height_form.html:27
-msgid "Add a Height Entry"
-msgstr "Afegir entrada Alçada"
-
-#: core/templates/core/height_list.html:15
-msgid "Add Height"
-msgstr "Afegir Alçada"
-
-#: core/templates/core/height_list.html:70
-msgid "No height entries found."
-msgstr ""
-
#: core/templates/core/note_confirm_delete.html:4
msgid "Delete a Note"
msgstr "Esborra Nota"
@@ -1285,45 +932,10 @@ msgstr "Actualitza Nota"
msgid "Add a Note"
msgstr "Afegir Nota"
-#: core/templates/core/note_list.html:15
-msgid "Add Note"
-msgstr "Afegir Nota"
-
#: core/templates/core/note_list.html:64
msgid "No notes found."
msgstr "Notes no trobades."
-#: core/templates/core/pumping_confirm_delete.html:4
-msgid "Delete a Pumping Entry"
-msgstr ""
-
-#: core/templates/core/pumping_form.html:8
-#: core/templates/core/pumping_form.html:17
-#: core/templates/core/pumping_form.html:27
-msgid "Add a Pumping Entry"
-msgstr ""
-
-#: core/templates/core/pumping_list.html:15
-msgid "Add Pumping Entry"
-msgstr ""
-
-#: core/templates/core/pumping_list.html:66
-msgid "No pumping entries found."
-msgstr ""
-
-#: core/templates/core/quick_timer_nav.html:9
-#: core/templates/core/quick_timer_nav.html:29
-#: core/templates/core/timer_nav.html:37
-msgid "Quick Start Timer"
-msgstr "Temporitzador Ràpid"
-
-#: core/templates/core/quick_timer_nav.html:19
-#: core/templates/core/timer_nav.html:28
-#, fuzzy
-#| msgid "Quick Start Timer"
-msgid "Quick Start Timer For…"
-msgstr "Temporitzador Ràpid"
-
#: core/templates/core/sleep_confirm_delete.html:4
msgid "Delete a Sleep Entry"
msgstr "Esborra entrada son"
@@ -1336,10 +948,6 @@ msgstr "Actualitza entrada de son"
msgid "Add a Sleep Entry"
msgstr "Afegeix entrada Son"
-#: core/templates/core/sleep_list.html:15
-msgid "Add Sleep"
-msgstr "Afegir Son"
-
#: core/templates/core/sleep_list.html:25
#: core/templates/core/timer_form.html:12
#: core/templates/core/timer_list.html:24
@@ -1361,47 +969,10 @@ msgstr "Becaina"
msgid "No sleep entries found."
msgstr "Entrades de Son no trobades."
-#: core/templates/core/temperature_confirm_delete.html:4
-msgid "Delete a Temperature Reading"
-msgstr "Esborra mesura temperatura"
-
-#: core/templates/core/temperature_form.html:8
-#: core/templates/core/temperature_form.html:17
-msgid "Add a Temperature Reading"
-msgstr "Afegeix mesura temperatura"
-
-#: core/templates/core/temperature_form.html:27
-msgid "Add a Temperature Entry"
-msgstr "Afegeix temperatura"
-
-#: core/templates/core/temperature_list.html:15
-msgid "Add Temperature Reading"
-msgstr "Afegir temperatura"
-
-#: core/templates/core/temperature_list.html:70
-msgid "No temperature entries found."
-msgstr "Sense entrades temperatura."
-
#: core/templates/core/timer_confirm_delete.html:5
-#, python-format
msgid "Delete %(object)s"
msgstr "Esborra %(object)s"
-#: core/templates/core/timer_confirm_delete_inactive.html:5
-msgid "Delete All Inactive Timers"
-msgstr "Esborra temporitzadors inactius"
-
-#: core/templates/core/timer_confirm_delete_inactive.html:10
-msgid "Delete Inactive"
-msgstr "Esborra Inactius"
-
-#: core/templates/core/timer_confirm_delete_inactive.html:17
-#, python-format
-msgid "Are you sure you want to delete %(number)s inactive timer?"
-msgid_plural "Are you sure you want to delete %(number)s inactive timers?"
-msgstr[0] ""
-msgstr[1] ""
-
#: core/templates/core/timer_detail.html:28
msgid "Started"
msgstr "Iniciat"
@@ -1410,25 +981,16 @@ msgstr "Iniciat"
msgid "Stopped"
msgstr "Parat"
-#: core/templates/core/timer_detail.html:34
-#, python-format
-msgid "%(timer)s created by %(user)s"
-msgstr ""
+#: core/templates/core/timer_detail.html:26
+msgid "%(timer)s created by %(object.user)s"
+msgstr "%(timer)s creat per %(object.user)s"
#: core/templates/core/timer_detail.html:63
msgid "Timer actions"
msgstr "Accions Temporitzador"
-#: core/templates/core/timer_detail.html:77
-msgid "Restart timer"
-msgstr "Restablir temporitzador"
-
-#: core/templates/core/timer_detail.html:84
-msgid "Delete timer"
-msgstr "Esborra temporitzador"
-
#: core/templates/core/timer_form.html:22
-#: core/templates/core/timer_list.html:15 core/templates/core/timer_nav.html:15
+#: core/templates/core/timer_list.html:15 core/templates/core/timer_nav.html:23
msgid "Start Timer"
msgstr "Començar Temporitzador"
@@ -1436,30 +998,30 @@ msgstr "Començar Temporitzador"
msgid "No timer entries found."
msgstr "Sense entrades de temporitzadors."
-#: core/templates/core/timer_list.html:68
-msgid "Delete Inactive Timers"
-msgstr "Esborra Temporitzadors Actius"
+#: babybuddy/templates/babybuddy/nav-dropdown.html:32
+#: core/templates/core/timer_nav.html:18
+msgid "Quick Start Timer"
+msgstr "Temporitzador Ràpid"
-#: core/templates/core/timer_nav.html:20
+#: core/templates/core/timer_nav.html:28
msgid "View Timers"
msgstr "Veure Temporitzadors"
-#: core/templates/core/timer_nav.html:44
+#: core/templates/core/timer_nav.html:32
#: dashboard/templates/cards/timer_list.html:6
msgid "Active Timers"
msgstr "Temporitzadors Actius"
-#: core/templates/core/timer_nav.html:50
+#: core/templates/core/timer_nav.html:38
#: dashboard/templates/cards/diaperchange_last.html:17
#: dashboard/templates/cards/diaperchange_types.html:12
#: dashboard/templates/cards/feeding_day.html:20
#: dashboard/templates/cards/feeding_day.html:52
#: dashboard/templates/cards/feeding_last.html:17
#: dashboard/templates/cards/feeding_last_method.html:43
+#: dashboard/templates/cards/sleep_day.html:14
#: dashboard/templates/cards/sleep_last.html:17
#: dashboard/templates/cards/sleep_naps_day.html:18
-#: dashboard/templates/cards/sleep_recent.html:20
-#: dashboard/templates/cards/sleep_recent.html:52
#: dashboard/templates/cards/tummytime_day.html:14
msgid "None"
msgstr "Cap"
@@ -1477,10 +1039,6 @@ msgstr "Actualitza entrada cap per avall"
msgid "Add a Tummy Time Entry"
msgstr "Afegeix entrada cap per avall"
-#: core/templates/core/tummytime_list.html:15
-msgid "Add Tummy Time"
-msgstr "Esborra temps Panxa"
-
#: core/templates/core/tummytime_list.html:67
msgid "No tummy time entries found."
msgstr "Sense entrades cap per avall"
@@ -1495,13 +1053,984 @@ msgstr "Esborra entrada de Pes"
msgid "Add a Weight Entry"
msgstr "Afegeix entrada de Pes"
+#: core/templates/core/weight_list.html:70
+msgid "No weight entries found."
+msgstr "Sense entrada de Pes"
+
+#: core/timeline.py:164
+msgid "%(child)s had a diaper change."
+msgstr "%(child)s va tenir un canvi de bolquer."
+
+#: core/timeline.py:145
+msgid "%(child)s started feeding."
+msgstr "%(nado)s han començat a alimentar-se."
+
+#: core/timeline.py:158
+msgid "%(child)s finished feeding."
+msgstr "%(nado)s han acabat d'alimentar."
+
+#: core/timeline.py:91
+msgid "%(child)s fell asleep."
+msgstr "%(child)s dormint."
+
+#: core/timeline.py:103
+msgid "%(child)s woke up."
+msgstr "%(child)s desperts."
+
+#: core/timeline.py:53
+msgid "%(child)s started tummy time!"
+msgstr "%(child)s estan panxa avall!"
+
+#: core/timeline.py:65
+msgid "%(child)s finished tummy time."
+msgstr "%(child)s han acabat panxa avall."
+
+#: core/views.py:33
+msgid "%(model)s entry for %(child)s added!"
+msgstr "S'ha afegit l'entrada de %(model)s per a %(child)s!"
+
+#: core/views.py:35 core/views.py:308
+msgid "%(model)s entry added!"
+msgstr "S'ha afegit l'entrada de %(model)s!"
+
+#: core/views.py:61 core/views.py:316
+msgid "%(model)s entry for %(child)s updated."
+msgstr "S'ha actualitzat l'entrada de %(model)s per a %(child)s."
+
+#: core/views.py:63
+msgid "%(model)s entry updated."
+msgstr "S'ha actualitzat l'entrada de %(model)."
+
+#: core/views.py:115
+msgid "%(first_name)s %(last_name)s added!"
+msgstr "%(first_name)s %(last_name)s afegit!"
+
+#: core/views.py:478
+msgid "%(timer)s stopped."
+msgstr "%(timer)s acabats."
+
+#: dashboard/templates/cards/diaperchange_last.html:6
+msgid "Last Diaper Change"
+msgstr "últim canvi de Bolquer"
+
+#: dashboard/templates/cards/diaperchange_last.html:8
+#: dashboard/templates/cards/feeding_last.html:8
+#: dashboard/templates/cards/sleep_last.html:8
+#: dashboard/templates/cards/tummytime_last.html:8
+msgid "%(time)s ago"
+msgstr "fa %(time) temps"
+
+#: dashboard/templates/cards/tummytime_last.html:18
+msgid "Never"
+msgstr "Mai"
+
+#: dashboard/templates/cards/diaperchange_types.html:14
+msgid "Past Week"
+msgstr "Setmana Passada"
+
+#: dashboard/templates/cards/diaperchange_types.html:27
+msgid "wet"
+msgstr "líquid"
+
+#: dashboard/templates/cards/diaperchange_types.html:35
+msgid "solid"
+msgstr "sòlid"
+
+#: dashboard/templates/cards/diaperchange_types.html:49
+msgid "today"
+msgstr "avui"
+
+#: dashboard/templates/cards/diaperchange_types.html:51
+msgid "yesterday"
+msgstr "ahir"
+
+#: dashboard/templates/cards/diaperchange_types.html:53
+msgid "%(key)s days ago"
+msgstr "Fa %(key)s dies"
+
+#: dashboard/templates/cards/feeding_last.html:6
+msgid "Last Feeding"
+msgstr "últim menjar"
+
+#: dashboard/templates/cards/feeding_last_method.html:6
+msgid "Last Feeding Method"
+msgstr "últim mètode de menjar"
+
+#: dashboard/templates/cards/sleep_day.html:6
+msgid "Today's Sleep"
+msgstr "Son d'Avui"
+
+#: dashboard/templates/cards/sleep_day.html:11
+#: dashboard/templates/cards/sleep_naps_day.html:13
+#: dashboard/templates/cards/tummytime_day.html:11
+msgid "None yet today"
+msgstr "Cap encara avui"
+
+#: dashboard/templates/cards/sleep_day.html:20
+msgid "%(count)s sleep entries"
+msgstr "%(count)s entrades de son"
+
+#: dashboard/templates/cards/sleep_last.html:4
+msgid "Last Slept"
+msgstr "Últim Son"
+
+#: dashboard/templates/cards/sleep_naps_day.html:6
+msgid "Today's Naps"
+msgstr "Becaines d'Avui"
+
+#: dashboard/templates/cards/sleep_naps_day.html:12
+msgid "%(count)s nap%(plural)s"
+msgstr "%(count)s nap%(plural)s"
+
+#: dashboard/templates/cards/statistics.html:7
+msgid "Statistics"
+msgstr "Estadístiques"
+
+#: dashboard/templates/cards/statistics.html:25
+msgid "Not enough data"
+msgstr "Dades Insuficients"
+
+#: dashboard/templates/cards/timer_list.html:12
+msgid "%(count)s active timer%(plural)s"
+msgstr "%(count)s timer actiu%(plural)s"
+
+#: dashboard/templates/cards/timer_list.html:19
+msgid "Started by %(instance.user)s at %(start)s"
+msgstr "Iniciat per %(instance.user)s a %(start)s"
+
+#: dashboard/templates/cards/tummytime_day.html:6
+msgid "Today's Tummy Time"
+msgstr "Temps boca avall avui"
+
+#: dashboard/templates/cards/tummytime_day.html:22
+msgid "%(duration)s at %(end)s"
+msgstr "%(duration)s a %(end)s"
+
+#: dashboard/templates/cards/tummytime_last.html:6
+msgid "Last Tummy Time"
+msgstr "últim cop boca avall"
+
+#: dashboard/templates/dashboard/child_button_group.html:3
+msgid "Child actions"
+msgstr "Accions Nadó"
+
+#: reports/templates/reports/diaperchange_types.html:4
+#: reports/templates/reports/diaperchange_types.html:8
+#: reports/templates/reports/report_list.html:12
+msgid "Diaper Change Types"
+msgstr "Tipus canvis bolquers "
+
+#: reports/templates/reports/diaperchange_lifetimes.html:4
+#: reports/templates/reports/diaperchange_lifetimes.html:8
+#: reports/templates/reports/report_list.html:13
+msgid "Diaper Lifetimes"
+msgstr "Vida del bolquer"
+
+#: reports/templates/reports/report_list.html:15
+msgid "Feeding Durations (Average)"
+msgstr "Durada de l'alimentació (mitja)"
+
+#: reports/templates/reports/report_list.html:19
+#: reports/templates/reports/sleep_pattern.html:4
+#: reports/templates/reports/sleep_pattern.html:8
+msgid "Sleep Pattern"
+msgstr "Patró Son"
+
+#: reports/templates/reports/report_list.html:20
+#: reports/templates/reports/sleep_totals.html:4
+#: reports/templates/reports/sleep_totals.html:8
+msgid "Sleep Totals"
+msgstr "Totals Son"
+
+#: dashboard/templatetags/cards.py:420
+msgid "Diaper change frequency"
+msgstr "Freqüència Canvi Bolquers"
+
+#: dashboard/templatetags/cards.py:466
+msgid "Feeding frequency"
+msgstr "Freqüència Alimentació"
+
+#: dashboard/templatetags/cards.py:328
+msgid "Average nap duration"
+msgstr "Mitjana migdiades"
+
+#: dashboard/templatetags/cards.py:335
+msgid "Average naps per day"
+msgstr "Mitjana migdiades per dia"
+
+#: dashboard/templatetags/cards.py:345
+msgid "Average sleep duration"
+msgstr "Mitjana temps de son"
+
+#: dashboard/templatetags/cards.py:352
+msgid "Average awake duration"
+msgstr "Mitjana temps despert"
+
+#: dashboard/templatetags/cards.py:362
+msgid "Weight change per week"
+msgstr "Canvi pes setmanal"
+
+#: reports/graphs/diaperchange_lifetimes.py:35
+msgid "Diaper Lifetimes"
+msgstr "Vida del bolquer"
+
+#: reports/graphs/diaperchange_lifetimes.py:36
+msgid "Time between changes (hours)"
+msgstr "Temps entre canvis (hores)"
+
+#: reports/graphs/diaperchange_types.py:41 reports/graphs/feeding_amounts.py:58
+msgid "Total"
+msgstr "Total"
+
+#: reports/graphs/diaperchange_types.py:48
+msgid "Diaper Change Types"
+msgstr "Tipus canvi Bolquers"
+
+#: reports/graphs/diaperchange_types.py:51
+msgid "Number of changes"
+msgstr "Nº Canvis"
+
+#: reports/graphs/feeding_duration.py:38
+msgid "Average duration"
+msgstr "Mitja durada"
+
+#: reports/graphs/feeding_duration.py:46
+msgid "Total feedings"
+msgstr "Total alimentacions"
+
+#: reports/graphs/feeding_duration.py:55
+msgid "Average Feeding Durations"
+msgstr "Durades mitjanes de l'alimentació"
+
+#: reports/graphs/feeding_duration.py:58
+msgid "Average duration (minutes)"
+msgstr "Mitja durades (minuts)"
+
+#: reports/graphs/feeding_duration.py:60
+msgid "Number of feedings"
+msgstr "Nº alimentacions"
+
+#: reports/graphs/sleep_pattern.py:148
+msgid "Sleep Pattern"
+msgstr "Patró Son"
+
+#: reports/graphs/sleep_pattern.py:165
+msgid "Time of day"
+msgstr "Temps del dia"
+
+#: reports/graphs/sleep_totals.py:48
+msgid "Total sleep"
+msgstr "Total Son"
+
+#: reports/graphs/sleep_totals.py:58
+msgid "Sleep Totals"
+msgstr "Total Son"
+
+#: reports/graphs/sleep_totals.py:61
+msgid "Hours of sleep"
+msgstr "Hores de son"
+
+#: reports/graphs/weight_change.py:27
+msgid "Weight"
+msgstr "Pes"
+
+#: reports/templates/reports/feeding_duration.html:4
+#: reports/templates/reports/feeding_duration.html:8
+msgid "Average Feeding Durations"
+msgstr "Durada mitjana de l'alimentació"
+
+#: dashboard/templates/dashboard/child_button_group.html:12
+#: reports/templates/reports/base.html:9
+#: reports/templates/reports/report_list.html:4
+msgid "Reports"
+msgstr "Informes"
+
+#: reports/templates/reports/report_base.html:19
+msgid "There is no enough data to generate this report."
+msgstr "No hi ha prou dades per generar aquest informe."
+
+#: core/models.py:296
+msgid "Both breasts"
+msgstr "Ambdós Pits"
+
+#: babybuddy/settings/base.py:173
+msgid "German"
+msgstr "Alemany"
+
+#: babybuddy/settings/base.py:177
+msgid "Spanish"
+msgstr "Espanyol"
+
+#: babybuddy/settings/base.py:178
+msgid "Swedish"
+msgstr "Suec"
+
+#: babybuddy/settings/base.py:179
+msgid "Turkish"
+msgstr "Turc"
+
+#: babybuddy/templates/error/403.html:9
+msgid "You do not have permission to access this resource. Contact a site administrator for assistance."
+msgstr "No teniu permís per accedir a aquest recurs. Contacteu amb l'administrador del lloc per obtenir ajuda."
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:75
+#: babybuddy/templates/babybuddy/nav-dropdown.html:179 core/models.py:506
+#: core/models.py:519 core/models.py:520 core/models.py:523
+#: core/templates/core/temperature_confirm_delete.html:7
+#: core/templates/core/temperature_form.html:13
+#: core/templates/core/temperature_list.html:4
+#: core/templates/core/temperature_list.html:7
+#: core/templates/core/temperature_list.html:12
+#: core/templates/core/temperature_list.html:29
+msgid "Temperature"
+msgstr "Temperatura"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:185
+msgid "Temperature reading"
+msgstr "Lectura Temperatura"
+
+#: babybuddy/templates/babybuddy/welcome.html:14
+msgid "Learn about and predict baby's needs without (as much) guess work by using Baby Buddy to track —"
+msgstr "Apreneu i prediu les necessitats del nadó sense (tant) el treball d'endevinar utilitzant Baby Buddy per fer un seguiment de —"
+
+#: babybuddy/templates/babybuddy/welcome.html:56
+msgid "As the amount of entries grows, Baby Buddy will help parents and caregivers to identify small patterns in baby's habits using the dashboard and graphs. Baby Buddy is mobile-friendly and uses a dark theme to help weary moms and dads with 2AM feedings and changings. To get started, just click the button below to add your first (or second, third, etc.) child!"
+msgstr "A mesura que creixi la quantitat d'entrades, Baby Buddy ajudarà els pares i els cuidadors a identificar petits patrons en els hàbits del nadó mitjançant el tauler i els gràfics. Baby Buddy és apte per a mòbils i utilitza un tema fosc per ajudar les mares i els pares cansats amb l'alimentació i els canvis de les 2 de la matinada. Per començar, només cal que feu clic al botó següent per afegir el vostre primer (o segon, tercer, etc.) fill!"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:13
+msgid "Oh snap! The two passwords did not match. Please try again."
+msgstr "Oh, culleres! Les dues claus no coincideixen. Torna-ho a provar."
+
+#: babybuddy/templates/registration/password_reset_done.html:9
+msgid "We've emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly."
+msgstr "Us hem enviat per correu electrònic instruccions per configurar la vostra contrasenya, si hi ha un compte amb el correu electrònic. Els hauríeu de rebre en breu."
+
+#: babybuddy/templates/registration/password_reset_done.html:15
+msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder."
+msgstr "Si no rebeu cap correu electrònic, assegureu-vos que heu introduït l'adreça amb la qual us heu registrat i comproveu la vostra carpeta de correu brossa."
+
+#: babybuddy/templates/registration/password_reset_form.html:9
+msgid "Enter your account email address in the form below. If the address is valid, you will receive instructions for resetting your password."
+msgstr "Introduïu l'adreça de mail del vostre compte al formulari següent. Si l'adreça és vàlida, rebràs instruccions per restablir la clau."
+
+#: core/models.py:285
+msgid "Fortified breast milk"
+msgstr "Llet materna enriquida"
+
+#: core/templates/core/temperature_confirm_delete.html:4
+msgid "Delete a Temperature Reading"
+msgstr "Esborra mesura temperatura"
+
+#: core/templates/core/temperature_form.html:8
+#: core/templates/core/temperature_form.html:17
+msgid "Add a Temperature Reading"
+msgstr "Afegeix mesura temperatura"
+
+#: core/templates/core/temperature_form.html:27
+msgid "Add a Temperature Entry"
+msgstr "Afegeix temperatura"
+
+#: core/templates/core/temperature_list.html:70
+msgid "No temperature entries found."
+msgstr "Sense entrades temperatura."
+
+#: core/templates/core/timer_detail.html:34
+msgid "%(timer)s created by %(user)s"
+msgstr "%(timer)s creat per %(user)s"
+
+#: core/utils.py:40
+msgid "%(hours)s hour"
+msgid_plural "%(hours)s hours"
+msgstr[0] "%(hours)s hora"
+msgstr[1] "%(hours)s hores"
+
+#: core/utils.py:44
+msgid "%(minutes)s minute"
+msgid_plural "%(minutes)s minutes"
+msgstr[0] "%(minuts)s minut"
+msgstr[1] "%(minuts)s minuts"
+
+#: core/utils.py:50
+msgid "%(seconds)s second"
+msgid_plural "%(seconds)s seconds"
+msgstr[0] "%(segons)s segon"
+msgstr[1] "%(segons)s segons"
+
+#: core/views.py:69 core/views.py:146
+msgid "%(model)s entry deleted."
+msgstr "S'ha suprimit l'entrada de %(model)."
+
+#: core/views.py:366
+msgid "%(model)s reading added!"
+msgstr "La lectura de %(model)s ha afegit!"
+
+#: core/views.py:374
+msgid "%(model)s reading for %(child)s updated."
+msgstr "S'ha actualitzat la lectura de %(model)s per a %(child)s."
+
+#: dashboard/templates/cards/timer_list.html:27
+msgid "Started by %(user)s at %(start)s"
+msgstr "Iniciat per %(user)s a %(start)s"
+
+#: reports/templates/reports/feeding_amounts.html:4
+#: reports/templates/reports/feeding_amounts.html:8
+#: reports/templates/reports/report_list.html:14
+msgid "Feeding Amounts"
+msgstr "Quantitats alimentació"
+
+#: reports/graphs/feeding_amounts.py:27
+msgid "Total feeding amount"
+msgstr "total quantitat alimentació"
+
+#: reports/graphs/feeding_amounts.py:36
+msgid "Total Feeding Amounts"
+msgstr "Quantitats totals d'alimentació"
+
+#: reports/graphs/feeding_amounts.py:72
+msgid "Feeding amount"
+msgstr "quantitat alimentació"
+
+#: reports/templates/reports/report_base.html:17
+msgid "There is not enough data to generate this report."
+msgstr "No hi han prou dades per generar aquest informe."
+
+#: babybuddy/models.py:69
+msgid "Timezone"
+msgstr "Zona Horària"
+
+#: babybuddy/templates/admin/base_site.html:4
+#: babybuddy/templates/admin/base_site.html:7
+#: babybuddy/templates/babybuddy/nav-dropdown.html:359
+msgid "Database Admin"
+msgstr "BBDD Admin"
+
+#: core/templates/core/child_list.html:15
+msgid "Add Child"
+msgstr "Afegir Nadó"
+
+#: core/templates/core/diaperchange_list.html:15
+msgid "Add Diaper Change"
+msgstr "Afegir canvi Bolquer"
+
+#: core/templates/core/feeding_list.html:15
+msgid "Add Feeding"
+msgstr "Afegir alimentació"
+
+#: core/templates/core/note_list.html:15
+msgid "Add Note"
+msgstr "Afegir Nota"
+
+#: core/templates/core/sleep_list.html:15
+msgid "Add Sleep"
+msgstr "Afegir Son"
+
+#: core/templates/core/temperature_list.html:15
+msgid "Add Temperature Reading"
+msgstr "Afegir temperatura"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:5
+msgid "Delete All Inactive Timers"
+msgstr "Esborra temporitzadors inactius"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:10
+msgid "Delete Inactive"
+msgstr "Esborra Inactius"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:17
+msgid "Are you sure you want to delete %(number)s inactive timer%(plural)s?"
+msgstr "Esteu segur que voleu suprimir %(number)s timer inactiu%(plural)s?"
+
+#: core/templates/core/timer_list.html:68
+msgid "Delete Inactive Timers"
+msgstr "Esborra Temporitzadors Actius"
+
+#: core/templates/core/tummytime_list.html:15
+msgid "Add Tummy Time"
+msgstr "Esborra temps Panxa"
+
#: core/templates/core/weight_list.html:15
msgid "Add Weight"
msgstr "Afegir Pes"
-#: core/templates/core/weight_list.html:70
-msgid "No weight entries found."
-msgstr "Sense entrada de Pes"
+#: core/views.py:501
+msgid "All inactive timers deleted."
+msgstr "Temporitzadors inactius esborrats."
+
+#: core/views.py:511
+msgid "No inactive timers exist."
+msgstr "Sense temporitzadors inactius."
+
+#: dashboard/templates/cards/feeding_last_method.html:19
+msgid "most recent"
+msgstr "recents"
+
+#: dashboard/templates/cards/feeding_last_method.html:21
+msgid "%(n)s feeding%(plural)s ago"
+msgstr "%(n)s alimentant%(plural)s fa"
+
+#: dashboard/templates/cards/sleep_last.html:6
+msgid "Last Sleep"
+msgstr "Últim Son"
+
+#: reports/templates/reports/report_list.html:11
+msgid "Diaper Change Amounts"
+msgstr "Quantitats Canvi Volquers"
+
+#: reports/graphs/diaperchange_amounts.py:27
+msgid "Diaper change amount"
+msgstr "Quantitat canvi Volquers"
+
+#: reports/graphs/diaperchange_amounts.py:36
+msgid "Diaper Change Amounts"
+msgstr "Quantitats Canvi Volquers"
+
+#: reports/graphs/diaperchange_amounts.py:39
+msgid "Change amount"
+msgstr "Canviar quantitat"
+
+#: reports/templates/reports/diaperchange_amounts.html:4
+#: reports/templates/reports/diaperchange_amounts.html:8
+msgid "Diaper Amounts"
+msgstr "Quantitats Volquers"
+
+#: babybuddy/models.py:21
+msgid "If supported by browser, the dashboard will only refresh when visible, and also when receiving focus."
+msgstr "Si és compatible amb el navegador, el tauler només s'actualitzarà quan estigui visible i també quan rebi el focus."
+
+#: babybuddy/models.py:40
+msgid "Hide Empty Dashboard Cards"
+msgstr "Amaga les targetes buides del tauler de control"
+
+#: babybuddy/models.py:43
+msgid "Hide data older than"
+msgstr "Oculta dades anteriors a "
+
+#: babybuddy/models.py:45
+msgid "This setting controls which data will be shown in the dashboard."
+msgstr "Aquesta configuració controla quines dades es mostraran al tauler."
+
+#: babybuddy/models.py:51
+msgid "show all data"
+msgstr "mostra totes les dades"
+
+#: babybuddy/models.py:52
+msgid "1 day"
+msgstr "1 dia"
+
+#: babybuddy/models.py:53
+msgid "2 days"
+msgstr "2 dies"
+
+#: babybuddy/models.py:54
+msgid "3 days"
+msgstr "3 dies"
+
+#: babybuddy/models.py:55
+msgid "1 week"
+msgstr "1 setmana"
+
+#: babybuddy/models.py:56
+msgid "4 weeks"
+msgstr "4 setmanes"
+
+#: babybuddy/settings/base.py:168
+msgid "Dutch"
+msgstr "Alemany"
+
+#: babybuddy/settings/base.py:172
+msgid "Finnish"
+msgstr "Finlandès"
+
+#: babybuddy/settings/base.py:174
+msgid "Italian"
+msgstr "Italià"
+
+#: babybuddy/settings/base.py:175
+msgid "Polish"
+msgstr "Polac"
+
+#: babybuddy/settings/base.py:176
+msgid "Portuguese"
+msgstr "Portuguès"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:118
+#: core/templates/timeline/timeline.html:4
+#: core/templates/timeline/timeline.html:7
+#: dashboard/templates/dashboard/child_button_group.html:9
+msgid "Timeline"
+msgstr "Línia de Temps"
+
+#: core/models.py:286
+msgid "Solid food"
+msgstr "Menjar Sòlid"
+
+#: core/models.py:297
+msgid "Parent fed"
+msgstr "Alimentat per pares"
+
+#: core/models.py:298
+msgid "Self fed"
+msgstr "Autoalimentat"
+
+#: core/templates/core/diaperchange_list.html:29
+msgid "Contents"
+msgstr "Continguts"
+
+#: core/templates/core/timer_detail.html:77
+msgid "Restart timer"
+msgstr "Restablir temporitzador"
+
+#: core/templates/core/timer_detail.html:84
+msgid "Delete timer"
+msgstr "Esborra temporitzador"
+
+#: core/templatetags/datetime.py:60
+msgid "Today"
+msgstr "Avui"
+
+#: core/templatetags/datetime.py:75
+msgid "{}, {}"
+msgstr "{}, {}"
+
+#: core/templatetags/duration.py:25
+msgid "0 days"
+msgstr "0 dies"
+
+#: core/timeline.py:137
+msgid "Amount: %(amount).0f"
+msgstr "Import: %(import).0f"
+
+#: core/timeline.py:157
+msgid "Contents: %(contents)s"
+msgstr "Continguts: %(contents)s"
+
+#: dashboard/templates/cards/diaperchange_last.html:12
+#: dashboard/templates/cards/feeding_last.html:12
+#: dashboard/templates/cards/sleep_last.html:12
+#: dashboard/templates/cards/tummytime_last.html:13
+msgid "%(since)s ago
%(time)s"
+msgstr "%(des)s fa
%(time)s"
+
+#: dashboard/templates/cards/feeding_day.html:6
+msgid "Today's Feeding"
+msgstr "Alimentació d'Avui"
+
+#: dashboard/templates/cards/feeding_day.html:20
+msgid "%(count)s feeding entries"
+msgstr "%(count)s entrades d'alimentació"
+
+#: dashboard/templates/cards/statistics.html:42
+msgid "No data yet"
+msgstr "Sense dades"
+
+#: reports/templates/reports/report_list.html:21
+msgid "Tummy Time Durations (Sum)"
+msgstr "Durada del temps de panxa (suma)"
+
+#: core/templates/timeline/_timeline.html:61
+#: dashboard/templates/dashboard/child_button_group.html:20
+msgid "Edit"
+msgstr "Edita"
+
+#: dashboard/templatetags/cards.py:456
+msgid "Feeding frequency (past 3 days)"
+msgstr "Freqüència d'alimentació (darrers 3 dies)"
+
+#: dashboard/templatetags/cards.py:460
+msgid "Feeding frequency (past 2 weeks)"
+msgstr "Freqüència d'alimentació (darreres 2 setmanes)"
+
+#: reports/graphs/tummytime_duration.py:34
+msgid "Total duration"
+msgstr "Duració total"
+
+#: reports/graphs/tummytime_duration.py:41
+#: reports/graphs/tummytime_duration.py:55
+msgid "Number of sessions"
+msgstr "Nº sessions"
+
+#: reports/graphs/tummytime_duration.py:50
+msgid "Total Tummy Time Durations"
+msgstr "Durades totals del temps de panxa"
+
+#: reports/graphs/tummytime_duration.py:53
+msgid "Total duration (minutes)"
+msgstr "Total durada (minuts)"
+
+#: reports/templates/reports/tummytime_duration.html:4
+#: reports/templates/reports/tummytime_duration.html:8
+msgid "Total Tummy Time Durations"
+msgstr "Durada total del temps de panxa"
+
+#: babybuddy/settings/base.py:169
+msgid "English (US)"
+msgstr "Anglès (US)"
+
+#: babybuddy/settings/base.py:170
+msgid "English (UK)"
+msgstr "Anglès (UK)"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:171
+msgid "Measurements"
+msgstr "Mides"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:207 core/models.py:369
+#: core/models.py:381 core/models.py:382 core/models.py:385
+#: core/templates/core/height_confirm_delete.html:7
+#: core/templates/core/height_form.html:13
+#: core/templates/core/height_list.html:4
+#: core/templates/core/height_list.html:7
+#: core/templates/core/height_list.html:12
+#: core/templates/core/height_list.html:29 reports/graphs/height_change.py:19
+#: reports/graphs/height_change.py:30
+#: reports/templates/reports/height_change.html:4
+#: reports/templates/reports/height_change.html:8
+#: reports/templates/reports/report_list.html:17
+msgid "Height"
+msgstr "Alçada"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:213
+msgid "Height entry"
+msgstr "Entrada Alçada"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:221 core/models.py:338
+#: core/models.py:351 core/models.py:352 core/models.py:355
+#: core/templates/core/head_circumference_confirm_delete.html:7
+#: core/templates/core/head_circumference_form.html:13
+#: core/templates/core/head_circumference_list.html:4
+#: core/templates/core/head_circumference_list.html:7
+#: core/templates/core/head_circumference_list.html:12
+#: core/templates/core/head_circumference_list.html:29
+#: reports/graphs/head_circumference_change.py:19
+#: reports/graphs/head_circumference_change.py:30
+#: reports/templates/reports/head_circumference_change.html:4
+#: reports/templates/reports/head_circumference_change.html:8
+#: reports/templates/reports/report_list.html:16
+msgid "Head Circumference"
+msgstr "Circumferència del Cap"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:227
+msgid "Head Circumference entry"
+msgstr "Entrada de circumferència de Cap"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:235 core/models.py:139
+#: core/models.py:151 core/models.py:152 core/models.py:155
+#: core/templates/core/bmi_confirm_delete.html:7
+#: core/templates/core/bmi_form.html:13 core/templates/core/bmi_list.html:4
+#: core/templates/core/bmi_list.html:7 core/templates/core/bmi_list.html:12
+#: core/templates/core/bmi_list.html:29 reports/graphs/bmi_change.py:19
+#: reports/graphs/bmi_change.py:30 reports/templates/reports/bmi_change.html:4
+#: reports/templates/reports/bmi_change.html:8
+msgid "BMI"
+msgstr "BMI"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:241
+msgid "BMI entry"
+msgstr "Entrada BMI"
+
+#: core/models.py:452
+msgid "Napping"
+msgstr "Migdiada"
+
+#: core/templates/core/bmi_confirm_delete.html:4
+msgid "Delete a BMI Entry"
+msgstr "Esborra entrada BMI"
+
+#: core/templates/core/bmi_form.html:8 core/templates/core/bmi_form.html:17
+#: core/templates/core/bmi_form.html:27
+msgid "Add a BMI Entry"
+msgstr "Afegeix entrada BMI"
+
+#: core/templates/core/bmi_list.html:15
+msgid "Add BMI"
+msgstr "Afegeix BMI"
+
+#: core/templates/core/bmi_list.html:70
+msgid "No bmi entries found."
+msgstr "Entrades BMI no trobades."
+
+#: core/templates/core/head_circumference_confirm_delete.html:4
+msgid "Delete a Head Circumference Entry"
+msgstr "Esborra entrada circumferència cap"
+
+#: core/templates/core/head_circumference_form.html:8
+#: core/templates/core/head_circumference_form.html:17
+#: core/templates/core/head_circumference_form.html:27
+msgid "Add a Head Circumference Entry"
+msgstr "Afegeix entrada circumferència cap"
+
+#: core/templates/core/head_circumference_list.html:15
+msgid "Add Head Circumference"
+msgstr "Afegeix Circumferència de Cap"
+
+#: core/templates/core/head_circumference_list.html:70
+msgid "No head circumference entries found."
+msgstr "Sense entrades de circumferència de Cap."
+
+#: core/templates/core/height_confirm_delete.html:4
+msgid "Delete a Height Entry"
+msgstr "Esborra entrada Pes"
+
+#: core/templates/core/height_form.html:8
+#: core/templates/core/height_form.html:17
+#: core/templates/core/height_form.html:27
+msgid "Add a Height Entry"
+msgstr "Afegir entrada Alçada"
+
+#: core/templates/core/height_list.html:15
+msgid "Add Height"
+msgstr "Afegir Alçada"
+
+#: core/templates/core/height_list.html:70
+msgid "No height entries found."
+msgstr "Sense entrades de Pes."
+
+#: core/templates/timeline/_timeline.html:44
+msgid "Duration: %(duration)s"
+msgstr "Durada: %(duration)s"
+
+#: core/templates/timeline/_timeline.html:53
+msgid "%(since)s since previous"
+msgstr "%(des)s des de l'anterior"
+
+#: core/templates/timeline/_timeline.html:85
+msgid "No events"
+msgstr "Sense events"
+
+#: core/timeline.py:185
+msgid "%(child)s had a %(type)s diaper change."
+msgstr "%(child)s tenia un canvi de bolquer de %(type)s."
+
+#: dashboard/templatetags/cards.py:372
+msgid "Height change per week"
+msgstr "Canvi de pes per setmana"
+
+#: dashboard/templatetags/cards.py:382
+msgid "Head circumference change per week"
+msgstr "Canvi de circumferència per setmana"
+
+#: dashboard/templatetags/cards.py:392
+msgid "BMI change per week"
+msgstr "canvi BMI per setmana"
+
+#: reports/graphs/bmi_change.py:27
+msgid "BMI"
+msgstr "BMI"
+
+#: reports/graphs/feeding_amounts.py:69
+msgid "Total Feeding Amount by Type"
+msgstr "Quantitat total d'alimentació per tipus"
+
+#: reports/graphs/head_circumference_change.py:27
+msgid "Head Circumference"
+msgstr "Circumferència de cap"
+
+#: reports/graphs/height_change.py:27
+msgid "Height"
+msgstr "Alçada"
+
+#: babybuddy/settings/base.py:167
+msgid "Chinese (simplified)"
+msgstr "Xinès"
+
+#: babybuddy/templates/error/400.html:4 babybuddy/templates/error/400.html:7
+msgid "Bad Request"
+msgstr "Petició Invàlida"
+
+#: babybuddy/templates/error/403_csrf_bad_origin.html:14
+msgid "How to Fix"
+msgstr "Com arreglar"
+
+#: babybuddy/templates/error/403_csrf_bad_origin.html:15
+msgid "Add %(origin)s to the CSRF_TRUSTED_ORIGINS
environment variable. If multiple origins are required separate with commas."
+msgstr "Afegiu %(origin)s a la variable d'entorn CSRF_TRUSTED_ORIGINS
. Si es requereixen diversos orígens, separeu-los amb comes."
+
+#: babybuddy/templates/error/404.html:4 babybuddy/templates/error/404.html:7
+msgid "Page Not Found"
+msgstr "Pàgina no trobada"
+
+#: babybuddy/templates/error/404.html:9
+msgid "The path %(request_path)s
does not exist."
+msgstr "El camí %(request_path)s
no existeix."
+
+#: babybuddy/templates/error/500.html:4 babybuddy/templates/error/500.html:7
+msgid "Server Error"
+msgstr "Error Servidor"
+
+#: babybuddy/templates/error/base.html:14
+msgid "Return to Baby Buddy"
+msgstr "Tornar a Baby Buddy"
+
+#: babybuddy/views.py:43
+msgid "Forbidden"
+msgstr "No Permès"
+
+#: babybuddy/views.py:44
+msgid "CSRF verification failed. Request aborted."
+msgstr "Fallada verificació CSRF. Sol·licitud avortada."
+
+#: babybuddy/settings/base.py:166
+msgid "Catalan"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:93
+#: babybuddy/templates/babybuddy/nav-dropdown.html:316 core/models.py:437
+#: core/models.py:438 core/models.py:441
+#: core/templates/core/pumping_confirm_delete.html:7
+#: core/templates/core/pumping_form.html:13
+#: core/templates/core/pumping_list.html:4
+#: core/templates/core/pumping_list.html:7
+#: core/templates/core/pumping_list.html:12
+#: reports/templates/reports/pumping_amounts.html:4
+#: reports/templates/reports/pumping_amounts.html:8
+msgid "Pumping"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:322
+msgid "Pumping entry"
+msgstr ""
+
+#: core/filters.py:11 core/models.py:96 core/models.py:115
+msgid "Tag"
+msgstr ""
+
+#: core/forms.py:136
+msgid "Click on the tags to add (+) or remove (-) tags or use the text editor to create new tags."
+msgstr ""
+
+#: core/models.py:90
+msgid "Last used"
+msgstr ""
+
+#: core/models.py:97 core/templates/core/bmi_list.html:30
+#: core/templates/core/diaperchange_list.html:32
+#: core/templates/core/feeding_list.html:35
+#: core/templates/core/head_circumference_list.html:30
+#: core/templates/core/height_list.html:30
+#: core/templates/core/note_list.html:30 core/templates/core/sleep_list.html:32
+#: core/templates/core/temperature_list.html:30
+#: core/templates/core/tummytime_list.html:31
+#: core/templates/core/weight_list.html:30
+msgid "Tags"
+msgstr ""
+
+#: core/templates/core/pumping_confirm_delete.html:4
+msgid "Delete a Pumping Entry"
+msgstr ""
+
+#: core/templates/core/pumping_form.html:8
+#: core/templates/core/pumping_form.html:17
+#: core/templates/core/pumping_form.html:27
+msgid "Add a Pumping Entry"
+msgstr ""
+
+#: core/templates/core/pumping_list.html:15
+msgid "Add Pumping Entry"
+msgstr ""
+
+#: core/templates/core/pumping_list.html:66
+msgid "No pumping entries found."
+msgstr ""
#: core/templates/core/widget_tag_editor.html:22
msgid "Tag name"
@@ -1541,564 +2070,61 @@ msgctxt "Error modal"
msgid "Close"
msgstr ""
-#: core/templates/timeline/_timeline.html:38
-#, python-format
-msgid "%(since)s ago (%(time)s)"
-msgstr "%(since)s ago (%(time)s)"
-
-#: core/templates/timeline/_timeline.html:44
-#, python-format
-msgid "Duration: %(duration)s"
-msgstr ""
-
-#: core/templates/timeline/_timeline.html:53
-#, python-format
-msgid "%(since)s since previous"
-msgstr ""
-
-#: core/templates/timeline/_timeline.html:61
-#: dashboard/templates/dashboard/child_button_group.html:20
-msgid "Edit"
-msgstr "Edita"
-
-#: core/templates/timeline/_timeline.html:85
-msgid "No events"
-msgstr "Sense events"
-
-#: core/templatetags/datetime.py:60
-msgid "Today"
-msgstr "Avui"
-
-#: core/templatetags/datetime.py:75
-msgid "{}, {}"
-msgstr "{}, {}"
-
-#: core/templatetags/duration.py:25
-msgid "0 days"
-msgstr "0 dies"
-
-#: core/templatetags/duration.py:111
-#: dashboard/templates/cards/diaperchange_types.html:49
-msgid "today"
-msgstr "avui"
-
-#: core/templatetags/duration.py:113
-#: dashboard/templates/cards/diaperchange_types.html:51
-msgid "yesterday"
-msgstr "ahir"
-
-#: core/templatetags/duration.py:116
-#, fuzzy
-#| msgid "%(key)s days ago"
-msgid " days ago"
-msgstr "Fa %(key)s dies"
-
-#: core/timeline.py:53
-#, python-format
-msgid "%(child)s started tummy time!"
-msgstr ""
-
-#: core/timeline.py:65
-#, python-format
-msgid "%(child)s finished tummy time."
-msgstr ""
-
-#: core/timeline.py:91
-#, python-format
-msgid "%(child)s fell asleep."
-msgstr ""
-
-#: core/timeline.py:103
-#, python-format
-msgid "%(child)s woke up."
-msgstr ""
-
-#: core/timeline.py:137
-#, python-format
-msgid "Amount: %(amount).0f"
-msgstr ""
-
-#: core/timeline.py:145
-#, python-format
-msgid "%(child)s started feeding."
-msgstr ""
-
-#: core/timeline.py:158
-#, python-format
-msgid "%(child)s finished feeding."
-msgstr ""
-
-#: core/timeline.py:185
-#, python-format
-msgid "%(child)s had a %(type)s diaper change."
-msgstr ""
-
-#: core/utils.py:40
-#, python-format
-msgid "%(hours)s hour"
-msgid_plural "%(hours)s hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/utils.py:44
-#, python-format
-msgid "%(minutes)s minute"
-msgid_plural "%(minutes)s minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/utils.py:50
-#, python-format
-msgid "%(seconds)s second"
-msgid_plural "%(seconds)s seconds"
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/views.py:33
-#, python-format
-msgid "%(model)s entry for %(child)s added!"
-msgstr ""
-
-#: core/views.py:35 core/views.py:308
-#, python-format
-msgid "%(model)s entry added!"
-msgstr ""
-
-#: core/views.py:61 core/views.py:316
-#, python-format
-msgid "%(model)s entry for %(child)s updated."
-msgstr ""
-
-#: core/views.py:63
-#, python-format
-msgid "%(model)s entry updated."
-msgstr ""
-
-#: core/views.py:69 core/views.py:146
-#, python-format
-msgid "%(model)s entry deleted."
-msgstr ""
-
-#: core/views.py:115
-#, python-format
-msgid "%(first_name)s %(last_name)s added!"
-msgstr ""
-
-#: core/views.py:366
-#, python-format
-msgid "%(model)s reading added!"
-msgstr ""
-
-#: core/views.py:374
-#, python-format
-msgid "%(model)s reading for %(child)s updated."
-msgstr ""
-
-#: core/views.py:483
-#, python-format
-msgid "%(timer)s stopped."
-msgstr ""
-
-#: core/views.py:506
-msgid "All inactive timers deleted."
-msgstr "Temporitzadors inactius esborrats."
-
-#: core/views.py:516
-msgid "No inactive timers exist."
-msgstr "Sense temporitzadors inactius."
-
-#: dashboard/templates/cards/diaperchange_last.html:6
-msgid "Last Diaper Change"
-msgstr "últim canvi de Bolquer"
-
-#: dashboard/templates/cards/diaperchange_last.html:12
-#: dashboard/templates/cards/feeding_last.html:12
-#: dashboard/templates/cards/sleep_last.html:12
-#: dashboard/templates/cards/tummytime_last.html:13
-#, python-format
-msgid "%(since)s ago
%(time)s"
-msgstr ""
-
-#: dashboard/templates/cards/diaperchange_types.html:14
-msgid "Past Week"
-msgstr "Setmana Passada"
-
-#: dashboard/templates/cards/diaperchange_types.html:27
-msgid "wet"
-msgstr "líquid"
-
-#: dashboard/templates/cards/diaperchange_types.html:35
-msgid "solid"
-msgstr "sòlid"
-
-#: dashboard/templates/cards/diaperchange_types.html:53
-#, python-format
-msgid "%(key)s days ago"
-msgstr "Fa %(key)s dies"
-
-#: dashboard/templates/cards/feeding_day.html:6
-msgid "Today's Feeding"
-msgstr "Alimentació d'Avui"
-
-#: dashboard/templates/cards/feeding_day.html:25
-#, fuzzy, python-format
-#| msgid "Total feedings"
-msgid "%(counter)s feeding"
-msgid_plural "%(counter)s feedings"
-msgstr[0] "Total alimentacions"
-msgstr[1] "Total alimentacions"
-
#: dashboard/templates/cards/feeding_day.html:32
-#: dashboard/templates/cards/sleep_recent.html:32
-#, python-format
msgid " %(since)s
"
msgstr ""
-#: dashboard/templates/cards/feeding_last.html:6
-msgid "Last Feeding"
-msgstr "últim menjar"
-
-#: dashboard/templates/cards/feeding_last_method.html:6
-msgid "Last Feeding Method"
-msgstr "últim mètode de menjar"
-
-#: dashboard/templates/cards/feeding_last_method.html:19
-msgid "most recent"
-msgstr "recents"
-
-#: dashboard/templates/cards/feeding_last_method.html:21
-#, fuzzy, python-format
-#| msgid "%(key)s days ago"
-msgid "%(n)s feeding ago"
-msgid_plural "%(n)s feedings ago"
-msgstr[0] "Fa %(key)s dies"
-msgstr[1] "Fa %(key)s dies"
-
-#: dashboard/templates/cards/sleep_last.html:6
-msgid "Last Sleep"
-msgstr "Últim Son"
-
-#: dashboard/templates/cards/sleep_naps_day.html:6
-msgid "Today's Naps"
-msgstr "Becaines d'Avui"
-
-#: dashboard/templates/cards/sleep_naps_day.html:12
-#, python-format
-msgid "%(count)s nap"
-msgid_plural "%(count)s naps"
-msgstr[0] ""
-msgstr[1] ""
-
-#: dashboard/templates/cards/sleep_recent.html:6
-#, fuzzy
-#| msgid "Last Sleep"
-msgid "Recent Sleep"
-msgstr "Últim Son"
-
-#: dashboard/templates/cards/sleep_recent.html:25
-#, fuzzy, python-format
-#| msgid "Total feedings"
-msgid "%(counter)s sleep"
-msgid_plural "%(counter)s sleep"
-msgstr[0] "Total alimentacions"
-msgstr[1] "Total alimentacions"
-
-#: dashboard/templates/cards/statistics.html:7
-msgid "Statistics"
-msgstr "Estadístiques"
-
-#: dashboard/templates/cards/statistics.html:25
-msgid "Not enough data"
-msgstr "Dades Insuficients"
-
-#: dashboard/templates/cards/statistics.html:42
-msgid "No data yet"
-msgstr "Sense dades"
-
-#: dashboard/templates/cards/timer_list.html:12
-#, python-format
-msgid "%(count)s active timer"
-msgid_plural "%(count)s active timers"
-msgstr[0] ""
-msgstr[1] ""
-
-#: dashboard/templates/cards/timer_list.html:27
-#, python-format
-msgid "Started by %(user)s at %(start)s"
-msgstr ""
-
-#: dashboard/templates/cards/tummytime_day.html:6
-msgid "Today's Tummy Time"
-msgstr "Temps boca avall avui"
-
-#: dashboard/templates/cards/tummytime_day.html:22
-#, python-format
-msgid "%(duration)s at %(end)s"
-msgstr ""
-
-#: dashboard/templates/cards/tummytime_last.html:6
-msgid "Last Tummy Time"
-msgstr "últim cop boca avall"
-
-#: dashboard/templates/cards/tummytime_last.html:18
-msgid "Never"
-msgstr "Mai"
-
-#: dashboard/templates/dashboard/child_button_group.html:3
-msgid "Child actions"
-msgstr "Accions Nadó"
-
-#: dashboard/templates/dashboard/child_button_group.html:12
-#: reports/templates/reports/base.html:9
-#: reports/templates/reports/report_list.html:4
-msgid "Reports"
-msgstr "Informes"
-
-#: dashboard/templatetags/cards.py:357
-msgid "Average nap duration"
-msgstr "Mitjana migdiades"
-
-#: dashboard/templatetags/cards.py:364
-msgid "Average naps per day"
-msgstr "Mitjana migdiades per dia"
-
-#: dashboard/templatetags/cards.py:374
-msgid "Average sleep duration"
-msgstr "Mitjana temps de son"
-
-#: dashboard/templatetags/cards.py:381
-msgid "Average awake duration"
-msgstr "Mitjana temps despert"
-
-#: dashboard/templatetags/cards.py:391
-msgid "Weight change per week"
-msgstr "Canvi pes setmanal"
-
-#: dashboard/templatetags/cards.py:401
-msgid "Height change per week"
-msgstr ""
-
-#: dashboard/templatetags/cards.py:411
-msgid "Head circumference change per week"
-msgstr ""
-
-#: dashboard/templatetags/cards.py:421
-msgid "BMI change per week"
-msgstr ""
-
-#: dashboard/templatetags/cards.py:439
+#: dashboard/templatetags/cards.py:410
msgid "Diaper change frequency (past 3 days)"
msgstr ""
-#: dashboard/templatetags/cards.py:443
+#: dashboard/templatetags/cards.py:414
msgid "Diaper change frequency (past 2 weeks)"
msgstr ""
-#: dashboard/templatetags/cards.py:449
-msgid "Diaper change frequency"
-msgstr "Freqüència Canvi Bolquers"
-
-#: dashboard/templatetags/cards.py:485
-msgid "Feeding frequency (past 3 days)"
-msgstr ""
-
-#: dashboard/templatetags/cards.py:489
-msgid "Feeding frequency (past 2 weeks)"
-msgstr ""
-
-#: dashboard/templatetags/cards.py:495
-msgid "Feeding frequency"
-msgstr "Freqüència Alimentació"
-
-#: reports/graphs/bmi_change.py:27
-msgid "BMI"
-msgstr "BMI"
-
-#: reports/graphs/diaperchange_amounts.py:27
-msgid "Diaper change amount"
-msgstr "Quantitat canvi Volquers"
-
-#: reports/graphs/diaperchange_amounts.py:36
-msgid "Diaper Change Amounts"
-msgstr "Quantitats Canvi Volquers"
-
-#: reports/graphs/diaperchange_amounts.py:39
-msgid "Change amount"
-msgstr "Canviar quantitat"
-
-#: reports/graphs/diaperchange_lifetimes.py:35
-msgid "Diaper Lifetimes"
-msgstr ""
-
-#: reports/graphs/diaperchange_lifetimes.py:36
-msgid "Time between changes (hours)"
-msgstr "Temps entre canvis (hores)"
-
-#: reports/graphs/diaperchange_types.py:41 reports/graphs/feeding_amounts.py:58
-msgid "Total"
-msgstr "Total"
-
-#: reports/graphs/diaperchange_types.py:48
-msgid "Diaper Change Types"
-msgstr "Tipus canvi Bolquers"
-
-#: reports/graphs/diaperchange_types.py:51
-msgid "Number of changes"
-msgstr "Nº Canvis"
-
-#: reports/graphs/feeding_amounts.py:69
-msgid "Total Feeding Amount by Type"
-msgstr ""
-
-#: reports/graphs/feeding_amounts.py:72
-msgid "Feeding amount"
-msgstr "quantitat alimentació"
-
-#: reports/graphs/feeding_duration.py:38
-msgid "Average duration"
-msgstr "Mitja durada"
-
-#: reports/graphs/feeding_duration.py:46
-msgid "Total feedings"
-msgstr "Total alimentacions"
-
-#: reports/graphs/feeding_duration.py:55
-msgid "Average Feeding Durations"
-msgstr ""
-
-#: reports/graphs/feeding_duration.py:58
-msgid "Average duration (minutes)"
-msgstr "Mitja durades (minuts)"
-
-#: reports/graphs/feeding_duration.py:60
-msgid "Number of feedings"
-msgstr "Nº alimentacions"
-
-#: reports/graphs/head_circumference_change.py:27
-msgid "Head Circumference"
-msgstr ""
-
-#: reports/graphs/height_change.py:27
-msgid "Height"
-msgstr "Alçada"
-
-#: reports/graphs/pumping_amounts.py:59
+#: reports/graphs/pumping_amounts.py:57
msgid "Total Pumping Amount"
msgstr ""
-#: reports/graphs/pumping_amounts.py:62
+#: reports/graphs/pumping_amounts.py:60
msgid "Pumping Amount"
msgstr ""
-#: reports/graphs/sleep_pattern.py:150
-msgid "Sleep Pattern"
-msgstr "Patró Son"
-
-#: reports/graphs/sleep_pattern.py:167
-msgid "Time of day"
-msgstr "Temps del dia"
-
-#: reports/graphs/sleep_totals.py:48
-msgid "Total sleep"
-msgstr "Total Son"
-
-#: reports/graphs/sleep_totals.py:58
-msgid "Sleep Totals"
-msgstr "Total Son"
-
-#: reports/graphs/sleep_totals.py:61
-msgid "Hours of sleep"
-msgstr "Hores de son"
-
-#: reports/graphs/tummytime_duration.py:34
-msgid "Total duration"
-msgstr "Duració total"
-
-#: reports/graphs/tummytime_duration.py:41
-#: reports/graphs/tummytime_duration.py:55
-msgid "Number of sessions"
-msgstr "Nº sessions"
-
-#: reports/graphs/tummytime_duration.py:50
-msgid "Total Tummy Time Durations"
-msgstr ""
-
-#: reports/graphs/tummytime_duration.py:53
-msgid "Total duration (minutes)"
-msgstr "Total durada (minuts)"
-
-#: reports/graphs/weight_change.py:27
-msgid "Weight"
-msgstr "Pes"
-
-#: reports/templates/reports/diaperchange_amounts.html:4
-#: reports/templates/reports/diaperchange_amounts.html:8
-msgid "Diaper Amounts"
-msgstr "Quantitats Volquers"
-
-#: reports/templates/reports/diaperchange_lifetimes.html:4
-#: reports/templates/reports/diaperchange_lifetimes.html:8
-#: reports/templates/reports/report_list.html:13
-msgid "Diaper Lifetimes"
-msgstr ""
-
-#: reports/templates/reports/diaperchange_types.html:4
-#: reports/templates/reports/diaperchange_types.html:8
-#: reports/templates/reports/report_list.html:12
-msgid "Diaper Change Types"
-msgstr "Tipus canvis bolquers "
-
-#: reports/templates/reports/feeding_amounts.html:4
-#: reports/templates/reports/feeding_amounts.html:8
-#: reports/templates/reports/report_list.html:14
-msgid "Feeding Amounts"
-msgstr "Quantitats alimentació"
-
-#: reports/templates/reports/feeding_duration.html:4
-#: reports/templates/reports/feeding_duration.html:8
-msgid "Average Feeding Durations"
-msgstr ""
-
-#: reports/templates/reports/report_base.html:17
-msgid "There is not enough data to generate this report."
-msgstr ""
-
#: reports/templates/reports/report_list.html:10
msgid "Body Mass Index (BMI)"
msgstr ""
-#: reports/templates/reports/report_list.html:11
-msgid "Diaper Change Amounts"
-msgstr "Quantitats Canvi Volquers"
-
-#: reports/templates/reports/report_list.html:15
-msgid "Feeding Durations (Average)"
-msgstr ""
-
#: reports/templates/reports/report_list.html:18
msgid "Pumping Amounts"
msgstr ""
-#: reports/templates/reports/report_list.html:19
-#: reports/templates/reports/sleep_pattern.html:4
-#: reports/templates/reports/sleep_pattern.html:8
-msgid "Sleep Pattern"
-msgstr "Patró Son"
+#: core/templates/core/timer_confirm_delete_inactive.html:17
+msgid "Are you sure you want to delete %(number)s inactive timer?"
+msgid_plural "Are you sure you want to delete %(number)s inactive timers?"
+msgstr[0] ""
+msgstr[1] ""
-#: reports/templates/reports/report_list.html:20
-#: reports/templates/reports/sleep_totals.html:4
-#: reports/templates/reports/sleep_totals.html:8
-msgid "Sleep Totals"
-msgstr "Totals Son"
+#: dashboard/templates/cards/feeding_day.html:25
+msgid "%(counter)s feeding"
+msgid_plural "%(counter)s feedings"
+msgstr[0] ""
+msgstr[1] ""
-#: reports/templates/reports/report_list.html:21
-msgid "Tummy Time Durations (Sum)"
-msgstr ""
+#: dashboard/templates/cards/feeding_last_method.html:21
+msgid "%(n)s feeding ago"
+msgid_plural "%(n)s feedings ago"
+msgstr[0] ""
+msgstr[1] ""
-#: reports/templates/reports/tummytime_duration.html:4
-#: reports/templates/reports/tummytime_duration.html:8
-msgid "Total Tummy Time Durations"
-msgstr ""
+#: dashboard/templates/cards/sleep_naps_day.html:12
+msgid "%(count)s nap"
+msgid_plural "%(count)s naps"
+msgstr[0] ""
+msgstr[1] ""
+
+#: dashboard/templates/cards/timer_list.html:12
+msgid "%(count)s active timer"
+msgid_plural "%(count)s active timers"
+msgstr[0] ""
+msgstr[1] ""
-#~ msgid "Today's Sleep"
-#~ msgstr "Son d'Avui"
diff --git a/locale/cs/LC_MESSAGES/django.mo b/locale/cs/LC_MESSAGES/django.mo
new file mode 100644
index 00000000..08cca8a5
Binary files /dev/null and b/locale/cs/LC_MESSAGES/django.mo differ
diff --git a/locale/cs/LC_MESSAGES/django.po b/locale/cs/LC_MESSAGES/django.po
new file mode 100644
index 00000000..f1aaf6d1
--- /dev/null
+++ b/locale/cs/LC_MESSAGES/django.po
@@ -0,0 +1,2130 @@
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: POEditor.com\n"
+"Project-Id-Version: Baby Buddy\n"
+"Language: cs\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: babybuddy/admin.py:12 babybuddy/admin.py:13
+#: babybuddy/templates/babybuddy/nav-dropdown.html:347
+#: babybuddy/templates/babybuddy/user_settings_form.html:8
+msgid "Settings"
+msgstr "Nastavení"
+
+#: babybuddy/admin.py:17 babybuddy/templates/babybuddy/nav-dropdown.html:111
+#: babybuddy/templates/babybuddy/user_settings_form.html:61
+#: dashboard/templates/dashboard/child.html:4
+#: dashboard/templates/dashboard/child.html:9
+#: dashboard/templates/dashboard/child_button_group.html:6
+#: dashboard/templates/dashboard/dashboard.html:4
+#: dashboard/templates/dashboard/dashboard.html:7
+msgid "Dashboard"
+msgstr "Přehled"
+
+#: babybuddy/models.py:19
+msgid "Refresh rate"
+msgstr "Četnost obnovování"
+
+#: babybuddy/models.py:21
+msgid "This setting will only be used when a browser does not support refresh on focus."
+msgstr "Toto nastavení budou použito pouze když prohlížeč nepodporuje obnovování při zaměření."
+
+#: babybuddy/models.py:28
+msgid "disabled"
+msgstr "vypnuto"
+
+#: babybuddy/models.py:29
+msgid "1 min."
+msgstr "1 min."
+
+#: babybuddy/models.py:30
+msgid "2 min."
+msgstr "2 min."
+
+#: babybuddy/models.py:31
+msgid "3 min."
+msgstr "3 min."
+
+#: babybuddy/models.py:32
+msgid "4 min."
+msgstr "4 min."
+
+#: babybuddy/models.py:33
+msgid "5 min."
+msgstr "5 min."
+
+#: babybuddy/models.py:34
+msgid "10 min."
+msgstr "10 min."
+
+#: babybuddy/models.py:35
+msgid "15 min."
+msgstr "15 min."
+
+#: babybuddy/models.py:36
+msgid "30 min."
+msgstr "30 min."
+
+#: babybuddy/models.py:63
+msgid "Language"
+msgstr "Jazyk"
+
+#: babybuddy/models.py:73
+msgid "{user}'s Settings"
+msgstr "Nastavení pro {user}"
+
+#: babybuddy/settings/base.py:171
+msgid "English"
+msgstr "angličtina"
+
+#: babybuddy/settings/base.py:171
+msgid "French"
+msgstr "francouzština"
+
+#: babybuddy/templates/error/403.html:4 babybuddy/templates/error/403.html:7
+msgid "Permission Denied"
+msgstr "Přístup odepřen"
+
+#: babybuddy/templates/403.html:12
+msgid "You do not have permission to access this resource.\n"
+" Contact a site administrator for assistance."
+msgstr "Nemáte oprávnění pro přístup k tomuto prostředku. Obraťte se na správce webu ohledně součinnosti."
+
+#: babybuddy/templates/babybuddy/base.html:36
+msgid "Home"
+msgstr "Domů"
+
+#: babybuddy/templates/babybuddy/filter.html:18
+msgid "Filter"
+msgstr "Filtrovat"
+
+#: babybuddy/templates/babybuddy/filter.html:19
+msgid "Reset"
+msgstr "Resetovat"
+
+#: babybuddy/templates/babybuddy/filter.html:32
+msgid "Filters"
+msgstr "Filtry"
+
+#: babybuddy/templates/babybuddy/form.html:14
+#: babybuddy/templates/babybuddy/user_settings_form.html:89
+msgid "Submit"
+msgstr "Odeslat"
+
+#: babybuddy/templates/babybuddy/messages.html:18
+#: babybuddy/templates/babybuddy/user_settings_form.html:19
+msgid "Error: %(error)s"
+msgstr "Chyba: %(error)s"
+
+#: babybuddy/templates/babybuddy/messages.html:23
+msgid "Error: Some fields have errors. See below for details. "
+msgstr "Chyba: Některé kolonky jsou chybné. Podrobnosti viz níže. "
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:51 core/models.py:248
+#: core/models.py:252
+msgid "Diaper Change"
+msgstr "Výměna plenky"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:57
+#: babybuddy/templates/babybuddy/nav-dropdown.html:281 core/models.py:312
+#: core/models.py:316 core/templates/core/timer_detail.html:43
+msgid "Feeding"
+msgstr "Krmení"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:63
+#: babybuddy/templates/babybuddy/nav-dropdown.html:157 core/models.py:396
+#: core/models.py:407 core/models.py:411 core/templates/core/note_list.html:29
+msgid "Note"
+msgstr "Poznámka"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:69
+#: babybuddy/templates/babybuddy/nav-dropdown.html:288
+#: babybuddy/templates/babybuddy/welcome.html:42 core/models.py:467
+#: core/models.py:468 core/models.py:471
+#: core/templates/core/sleep_confirm_delete.html:7
+#: core/templates/core/sleep_form.html:13 core/templates/core/sleep_list.html:4
+#: core/templates/core/sleep_list.html:7 core/templates/core/sleep_list.html:12
+#: core/templates/core/timer_detail.html:51
+msgid "Sleep"
+msgstr "Spánek"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:81
+#: babybuddy/templates/babybuddy/nav-dropdown.html:301
+#: babybuddy/templates/babybuddy/welcome.html:50 core/models.py:647
+#: core/models.py:648 core/models.py:651
+#: core/templates/core/timer_detail.html:59
+#: core/templates/core/tummytime_confirm_delete.html:7
+#: core/templates/core/tummytime_form.html:13
+#: core/templates/core/tummytime_list.html:4
+#: core/templates/core/tummytime_list.html:7
+#: core/templates/core/tummytime_list.html:12
+msgid "Tummy Time"
+msgstr "Doba na břiše"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:87
+#: babybuddy/templates/babybuddy/nav-dropdown.html:193 core/models.py:673
+#: core/models.py:685 core/models.py:686 core/models.py:689
+#: core/templates/core/weight_confirm_delete.html:7
+#: core/templates/core/weight_form.html:13
+#: core/templates/core/weight_list.html:4
+#: core/templates/core/weight_list.html:7
+#: core/templates/core/weight_list.html:12
+#: core/templates/core/weight_list.html:29 reports/graphs/weight_change.py:19
+#: reports/graphs/weight_change.py:30
+#: reports/templates/reports/report_list.html:22
+#: reports/templates/reports/weight_change.html:4
+#: reports/templates/reports/weight_change.html:8
+msgid "Weight"
+msgstr "Váha"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:129
+#: babybuddy/templates/babybuddy/nav-dropdown.html:137 core/models.py:188
+#: core/templates/core/child_confirm_delete.html:7
+#: core/templates/core/child_detail.html:7
+#: core/templates/core/child_form.html:13 core/templates/core/child_list.html:4
+#: core/templates/core/child_list.html:7 core/templates/core/child_list.html:12
+#: dashboard/templates/dashboard/child.html:7
+#: reports/templates/reports/base.html:7
+msgid "Children"
+msgstr "Děti"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:143 core/models.py:137
+#: core/models.py:187 core/models.py:221 core/models.py:274 core/models.py:335
+#: core/models.py:367 core/models.py:394 core/models.py:426 core/models.py:450
+#: core/models.py:503 core/models.py:537 core/models.py:630 core/models.py:671
+#: core/templates/core/bmi_list.html:27
+#: core/templates/core/diaperchange_list.html:27
+#: core/templates/core/feeding_list.html:27
+#: core/templates/core/head_circumference_list.html:27
+#: core/templates/core/height_list.html:27
+#: core/templates/core/note_list.html:27
+#: core/templates/core/pumping_list.html:27
+#: core/templates/core/sleep_list.html:28
+#: core/templates/core/temperature_list.html:27
+#: core/templates/core/timer_list.html:27
+#: core/templates/core/tummytime_list.html:27
+#: core/templates/core/weight_list.html:27
+msgid "Child"
+msgstr "Dítě"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:151 core/models.py:143
+#: core/models.py:240 core/models.py:304 core/models.py:343 core/models.py:373
+#: core/models.py:408 core/models.py:430 core/models.py:458 core/models.py:511
+#: core/models.py:677 core/templates/core/note_confirm_delete.html:7
+#: core/templates/core/note_form.html:13 core/templates/core/note_list.html:4
+#: core/templates/core/note_list.html:7 core/templates/core/note_list.html:12
+msgid "Notes"
+msgstr "Poznámky"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:199
+msgid "Weight entry"
+msgstr "Položka váhy"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:255
+msgid "Activities"
+msgstr "Aktivity"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:262
+#: reports/graphs/diaperchange_lifetimes.py:27
+msgid "Changes"
+msgstr "Výměny"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:268
+msgid "Change"
+msgstr "Výměna"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:275
+#: babybuddy/templates/babybuddy/welcome.html:34 core/models.py:313
+#: core/templates/core/feeding_confirm_delete.html:7
+#: core/templates/core/feeding_form.html:13
+#: core/templates/core/feeding_list.html:4
+#: core/templates/core/feeding_list.html:7
+#: core/templates/core/feeding_list.html:12
+msgid "Feedings"
+msgstr "Krmení"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:294
+msgid "Sleep entry"
+msgstr "Položka spánku"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:307
+msgid "Tummy Time entry"
+msgstr "Položka doby na břiše"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:346
+#: babybuddy/templates/babybuddy/user_list.html:17
+#: babybuddy/templates/babybuddy/user_password_form.html:7
+#: babybuddy/templates/babybuddy/user_settings_form.html:7 core/models.py:556
+#: core/templates/core/timer_list.html:32
+msgid "User"
+msgstr "Uživatel"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:348
+msgid "Password"
+msgstr "Heslo"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:352
+msgid "Logout"
+msgstr "Odhlásit"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:355
+msgid "Site"
+msgstr "Stránka"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:356
+msgid "API Browser"
+msgstr "Prohlížeč API"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:358
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:7
+#: babybuddy/templates/babybuddy/user_form.html:13
+#: babybuddy/templates/babybuddy/user_list.html:4
+#: babybuddy/templates/babybuddy/user_list.html:7
+msgid "Users"
+msgstr "Uživatelé"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:250
+msgid "Backend Admin"
+msgstr "Správce podpůrné vrstvy"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:361
+msgid "Support"
+msgstr "Podpora"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:363
+msgid "Source Code"
+msgstr "Zdrojové kódy"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:365
+msgid "Chat / Support"
+msgstr "Chat / podpora"
+
+#: babybuddy/templates/babybuddy/paginator.html:11
+#: core/templates/timeline/_timeline.html:5
+#: core/templates/timeline/_timeline.html:7
+#: core/templates/timeline/_timeline.html:71
+#: core/templates/timeline/_timeline.html:73
+#: dashboard/templates/cards/feeding_day.html:43
+#: dashboard/templates/cards/feeding_last_method.html:34
+#: dashboard/templates/cards/statistics.html:34
+msgid "Previous"
+msgstr "Předchozí"
+
+#: babybuddy/templates/babybuddy/paginator.html:28
+#: core/templates/timeline/_timeline.html:12
+#: core/templates/timeline/_timeline.html:14
+#: core/templates/timeline/_timeline.html:78
+#: core/templates/timeline/_timeline.html:80
+#: dashboard/templates/cards/feeding_day.html:47
+#: dashboard/templates/cards/feeding_last_method.html:38
+#: dashboard/templates/cards/statistics.html:38
+msgid "Next"
+msgstr "Další"
+
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:4
+msgid "Delete User"
+msgstr "Smazat uživatel"
+
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:9
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:18
+#: core/templates/core/bmi_confirm_delete.html:8
+#: core/templates/core/bmi_confirm_delete.html:17
+#: core/templates/core/child_confirm_delete.html:9
+#: core/templates/core/child_confirm_delete.html:31
+#: core/templates/core/diaperchange_confirm_delete.html:8
+#: core/templates/core/diaperchange_confirm_delete.html:17
+#: core/templates/core/feeding_confirm_delete.html:8
+#: core/templates/core/feeding_confirm_delete.html:17
+#: core/templates/core/head_circumference_confirm_delete.html:8
+#: core/templates/core/head_circumference_confirm_delete.html:17
+#: core/templates/core/height_confirm_delete.html:8
+#: core/templates/core/height_confirm_delete.html:17
+#: core/templates/core/note_confirm_delete.html:8
+#: core/templates/core/note_confirm_delete.html:17
+#: core/templates/core/pumping_confirm_delete.html:8
+#: core/templates/core/pumping_confirm_delete.html:17
+#: core/templates/core/sleep_confirm_delete.html:8
+#: core/templates/core/sleep_confirm_delete.html:17
+#: core/templates/core/temperature_confirm_delete.html:8
+#: core/templates/core/temperature_confirm_delete.html:17
+#: core/templates/core/timer_confirm_delete.html:11
+#: core/templates/core/timer_confirm_delete.html:20
+#: core/templates/core/timer_confirm_delete_inactive.html:23
+#: core/templates/core/tummytime_confirm_delete.html:8
+#: core/templates/core/tummytime_confirm_delete.html:17
+#: core/templates/core/weight_confirm_delete.html:8
+#: core/templates/core/weight_confirm_delete.html:17
+#: dashboard/templates/dashboard/child_button_group.html:27
+msgid "Delete"
+msgstr "Smazat"
+
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:15
+#: core/templates/core/bmi_confirm_delete.html:14
+#: core/templates/core/child_confirm_delete.html:15
+#: core/templates/core/diaperchange_confirm_delete.html:14
+#: core/templates/core/feeding_confirm_delete.html:14
+#: core/templates/core/head_circumference_confirm_delete.html:14
+#: core/templates/core/height_confirm_delete.html:14
+#: core/templates/core/note_confirm_delete.html:14
+#: core/templates/core/pumping_confirm_delete.html:14
+#: core/templates/core/sleep_confirm_delete.html:14
+#: core/templates/core/temperature_confirm_delete.html:14
+#: core/templates/core/timer_confirm_delete.html:17
+#: core/templates/core/tummytime_confirm_delete.html:14
+#: core/templates/core/weight_confirm_delete.html:14
+msgid "Are you sure you want to delete %(object)s?
"
+msgstr "Opravdu chcete smazat %(object)s?
"
+
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:19
+#: core/templates/core/bmi_confirm_delete.html:18
+#: core/templates/core/child_confirm_delete.html:32
+#: core/templates/core/diaperchange_confirm_delete.html:18
+#: core/templates/core/feeding_confirm_delete.html:18
+#: core/templates/core/head_circumference_confirm_delete.html:18
+#: core/templates/core/height_confirm_delete.html:18
+#: core/templates/core/note_confirm_delete.html:18
+#: core/templates/core/pumping_confirm_delete.html:18
+#: core/templates/core/sleep_confirm_delete.html:18
+#: core/templates/core/temperature_confirm_delete.html:18
+#: core/templates/core/timer_confirm_delete.html:21
+#: core/templates/core/timer_confirm_delete_inactive.html:24
+#: core/templates/core/tummytime_confirm_delete.html:18
+#: core/templates/core/weight_confirm_delete.html:18
+msgid "Cancel"
+msgstr "Storno"
+
+#: babybuddy/templates/babybuddy/user_form.html:8
+#: babybuddy/templates/babybuddy/user_form.html:18
+#: babybuddy/templates/babybuddy/user_form.html:28
+#: babybuddy/templates/babybuddy/user_list.html:65
+msgid "Create User"
+msgstr "Vytvořit uživatele"
+
+#: babybuddy/templates/babybuddy/user_form.html:16
+#: core/templates/core/bmi_form.html:15 core/templates/core/child_form.html:16
+#: core/templates/core/diaperchange_form.html:15
+#: core/templates/core/feeding_form.html:15
+#: core/templates/core/head_circumference_form.html:15
+#: core/templates/core/height_form.html:15
+#: core/templates/core/note_form.html:15
+#: core/templates/core/pumping_form.html:15
+#: core/templates/core/sleep_form.html:15
+#: core/templates/core/temperature_form.html:15
+#: core/templates/core/timer_form.html:10
+#: core/templates/core/tummytime_form.html:15
+#: core/templates/core/weight_form.html:15
+msgid "Update"
+msgstr "Aktualizovat"
+
+#: babybuddy/templates/babybuddy/user_form.html:24
+#: core/templates/core/bmi_form.html:23 core/templates/core/child_form.html:24
+#: core/templates/core/diaperchange_form.html:23
+#: core/templates/core/feeding_form.html:23
+#: core/templates/core/head_circumference_form.html:23
+#: core/templates/core/height_form.html:23
+#: core/templates/core/note_form.html:23
+#: core/templates/core/pumping_form.html:23
+#: core/templates/core/sleep_form.html:23
+#: core/templates/core/temperature_form.html:23
+#: core/templates/core/timer_form.html:18
+#: core/templates/core/tummytime_form.html:23
+#: core/templates/core/weight_form.html:23
+msgid "Update %(object)s
"
+msgstr "Aktualizovat %(object)s
"
+
+#: babybuddy/templates/babybuddy/user_list.html:18
+#: core/templates/core/child_list.html:25
+msgid "First Name"
+msgstr "Jméno"
+
+#: babybuddy/templates/babybuddy/user_list.html:19
+#: core/templates/core/child_list.html:26
+msgid "Last Name"
+msgstr "Příjmení"
+
+#: babybuddy/templates/babybuddy/user_list.html:20
+msgid "Email"
+msgstr "E-mail"
+
+#: babybuddy/templates/babybuddy/user_list.html:21
+msgid "Staff"
+msgstr "Personál"
+
+#: babybuddy/templates/babybuddy/user_list.html:22 core/models.py:551
+#: core/templates/core/timer_list.html:31
+msgid "Active"
+msgstr "Aktivní"
+
+#: babybuddy/templates/babybuddy/user_list.html:23
+#: core/templates/core/bmi_list.html:24 core/templates/core/bmi_list.html:38
+#: core/templates/core/child_list.html:28
+#: core/templates/core/child_list.html:48
+#: core/templates/core/diaperchange_list.html:24
+#: core/templates/core/diaperchange_list.html:40
+#: core/templates/core/feeding_list.html:24
+#: core/templates/core/feeding_list.html:43
+#: core/templates/core/head_circumference_list.html:24
+#: core/templates/core/head_circumference_list.html:38
+#: core/templates/core/height_list.html:24
+#: core/templates/core/height_list.html:38
+#: core/templates/core/note_list.html:24 core/templates/core/note_list.html:37
+#: core/templates/core/pumping_list.html:24
+#: core/templates/core/pumping_list.html:37
+#: core/templates/core/sleep_list.html:24
+#: core/templates/core/sleep_list.html:40
+#: core/templates/core/temperature_list.html:24
+#: core/templates/core/temperature_list.html:38
+#: core/templates/core/tummytime_list.html:23
+#: core/templates/core/tummytime_list.html:38
+#: core/templates/core/weight_list.html:24
+#: core/templates/core/weight_list.html:38
+msgid "Actions"
+msgstr "Akce"
+
+#: babybuddy/templates/babybuddy/user_list.html:55
+msgid "No users found."
+msgstr "Nenalezeni žádní uživatelé."
+
+#: babybuddy/templates/babybuddy/user_password_form.html:4
+#: babybuddy/templates/babybuddy/user_password_form.html:8
+#: babybuddy/templates/babybuddy/user_password_form.html:12
+msgid "Change Password"
+msgstr "Změnit heslo"
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:4
+#: babybuddy/templates/babybuddy/user_settings_form.html:12
+msgid "User Settings"
+msgstr "Nastavení uživatele"
+
+#: babybuddy/templates/babybuddy/messages.html:23
+#: babybuddy/templates/babybuddy/user_settings_form.html:26
+msgid "Error: Some fields have errors. See below for details."
+msgstr "Chyba: Některé kolonky jsou chybné. Podrobnosti viz níže."
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:33
+msgid "User Profile"
+msgstr "Uživatelský profil"
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:79
+msgid "API"
+msgstr "API"
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:81
+msgid "Key"
+msgstr "Klíč"
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:84
+msgid "Regenerate"
+msgstr "Znovu vytvořit"
+
+#: babybuddy/templates/babybuddy/welcome.html:4
+#: babybuddy/templates/babybuddy/welcome.html:7
+msgid "Welcome!"
+msgstr "Vítejte!"
+
+#: babybuddy/templates/babybuddy/welcome.html:12
+msgid "Welcome to Baby Buddy!"
+msgstr "Vítejte v Baby Buddy!"
+
+#: babybuddy/templates/babybuddy/welcome.html:14
+msgid "Learn about and predict baby's needs without\n"
+" (as much) guess work by using Baby Buddy to track —"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/welcome.html:26 core/models.py:249
+#: core/templates/core/diaperchange_confirm_delete.html:7
+#: core/templates/core/diaperchange_form.html:13
+#: core/templates/core/diaperchange_list.html:4
+#: core/templates/core/diaperchange_list.html:7
+#: core/templates/core/diaperchange_list.html:12
+#: dashboard/templates/cards/diaperchange_types.html:6
+msgid "Diaper Changes"
+msgstr "Výměny plenek"
+
+#: babybuddy/templates/babybuddy/welcome.html:54
+msgid "As the amount of entries grows, Baby Buddy will help\n"
+" parents and caregivers to identify small patterns in baby's habits\n"
+" using the dashboard and graphs. Baby Buddy is mobile-friendly and\n"
+" uses a dark theme to help weary moms and dads with 2AM feedings and\n"
+" changings. To get started, just click the button below to add your\n"
+" first (or second, third, etc.) child!"
+msgstr "Jak počet příspěvků roste, Baby Buddy pomůže\n"
+" rodičům a pečovatelům identifikovat malé vzorce ve zvycích dítěte\n"
+" pomocí dashboardu a grafů. Baby Buddy je vhodný pro mobilní zařízení a při\n"
+" použití tmavého tématu pomůže unaveným maminkám a tatínkům s krmením ve 2:00. \n"
+"Chcete-li začít, stačí kliknout na tlačítko níže a přidat své\n"
+" první (nebo druhé, třetí atd.) dítě!"
+
+#: babybuddy/templates/babybuddy/welcome.html:68
+#: core/templates/core/child_form.html:8 core/templates/core/child_form.html:18
+#: core/templates/core/child_form.html:28
+msgid "Add a Child"
+msgstr "Přidat dítě"
+
+#: babybuddy/templates/registration/login.html:32
+msgid "Login"
+msgstr "Přihlásit"
+
+#: babybuddy/templates/registration/login.html:38
+msgid "Forgot your password?"
+msgstr "Zapomněli jste své heslo?"
+
+#: babybuddy/templates/registration/password_reset_complete.html:4
+msgid "Password Reset Successfully!"
+msgstr "Heslo úspěšně vyresetováno!"
+
+#: babybuddy/templates/registration/password_reset_complete.html:8
+msgid "Your password has been set. You may go ahead and log in now."
+msgstr "Vaše heslo bylo nastaveno. Můžete pokračovat na přihlášení se."
+
+#: babybuddy/templates/registration/password_reset_complete.html:9
+msgid "Log in"
+msgstr "Přihlásit se"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:4
+msgid "Password Reset"
+msgstr "Reset hesla"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:12
+msgid "Oh snap! The\n"
+" two passwords did not match. Please try again.
"
+msgstr "Kruci! Zadaná\n"
+" hesla se neshodují. Zkuste to znovu.
"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:22
+msgid "Enter your new password in each field below."
+msgstr "Nové heslo zadejte do obou kolonek níže."
+
+#: babybuddy/templates/registration/password_reset_confirm.html:46
+#: babybuddy/templates/registration/password_reset_form.html:31
+msgid "Reset Password"
+msgstr "Resetovat heslo"
+
+#: babybuddy/templates/registration/password_reset_done.html:4
+msgid "Reset Email Sent"
+msgstr "E-mail s resetem hesla odeslán"
+
+#: babybuddy/templates/registration/password_reset_done.html:8
+msgid "We've emailed you instructions for setting your\n"
+" password, if an account exists with the email you entered. You\n"
+" should receive them shortly.
\n"
+" If you don't receive an email, please make sure you've\n"
+" entered the address you registered with, and check your spam\n"
+" folder.
"
+msgstr ""
+
+#: babybuddy/templates/registration/password_reset_form.html:4
+msgid "Forgot Password"
+msgstr "Zapoměl(a) jsem heslo"
+
+#: babybuddy/templates/registration/password_reset_form.html:8
+msgid "Enter your account email address in the\n"
+" form below. If the address is valid, you will receive instructions for\n"
+" resetting your password.
"
+msgstr ""
+
+#: babybuddy/views.py:102
+msgid "User %(username)s added!"
+msgstr "Uživatel %(username)s přidán!"
+
+#: babybuddy/views.py:113
+msgid "User %(username)s updated."
+msgstr "Uživatel %(username)s aktualizován."
+
+#: babybuddy/views.py:125
+msgid "User {user} deleted."
+msgstr "Uživatel {user} smazán."
+
+#: babybuddy/views.py:146
+msgid "Password updated."
+msgstr "Heslo zaktualizováno."
+
+#: babybuddy/views.py:175
+msgid "User API key regenerated."
+msgstr "Klíč k API pro uživatele znovu vytvořen."
+
+#: babybuddy/views.py:188
+msgid "Settings saved!"
+msgstr "Nastavení uložena!"
+
+#: core/forms.py:120
+msgid "Name does not match child name."
+msgstr "Jméno se neshoduje se jménem dítěte."
+
+#: core/models.py:28
+msgid "Date can not be in the future."
+msgstr "Datum nemůže být v budoucnosti."
+
+#: core/models.py:42
+msgid "Start time must come before end time."
+msgstr "Je třeba, aby okamžik zahájení byl před okamžikem skončení."
+
+#: core/models.py:45
+msgid "Duration too long."
+msgstr "Trvání je příliš dlouhé."
+
+#: core/models.py:61
+msgid "Another entry intersects the specified time period."
+msgstr "Se zadaným obdobím se kříží jiná položka."
+
+#: core/models.py:75
+msgid "Date/time can not be in the future."
+msgstr "Datum/čas nemůže být v budoucnosti."
+
+#: core/models.py:163
+msgid "First name"
+msgstr "Jméno"
+
+#: core/models.py:165
+msgid "Last name"
+msgstr "Příjmení"
+
+#: core/models.py:167
+msgid "Birth date"
+msgstr "Datum narození"
+
+#: core/models.py:174
+msgid "Slug"
+msgstr "Unikátní klíč"
+
+#: core/models.py:177
+msgid "Picture"
+msgstr "Obrázek"
+
+#: core/models.py:224 core/models.py:398 core/models.py:429 core/models.py:509
+#: core/templates/core/diaperchange_list.html:25
+#: core/templates/core/note_list.html:25
+#: core/templates/core/pumping_list.html:25
+#: core/templates/core/temperature_list.html:25
+msgid "Time"
+msgstr "Čas"
+
+#: core/models.py:226 core/templates/core/diaperchange_list.html:61
+#: reports/graphs/diaperchange_types.py:36
+msgid "Wet"
+msgstr "Mokré"
+
+#: core/models.py:227 core/templates/core/diaperchange_list.html:62
+#: reports/graphs/diaperchange_types.py:30
+msgid "Solid"
+msgstr "Pevné"
+
+#: core/models.py:231
+msgid "Black"
+msgstr "Černá"
+
+#: core/models.py:232
+msgid "Brown"
+msgstr "Šedí"
+
+#: core/models.py:233
+msgid "Green"
+msgstr "Zelení"
+
+#: core/models.py:234
+msgid "Yellow"
+msgstr "Žlutá"
+
+#: core/models.py:84 core/models.py:237
+#: core/templates/core/diaperchange_list.html:30
+msgid "Color"
+msgstr "Barva"
+
+#: core/models.py:180
+msgid "Wet and/or solid is required."
+msgstr "Je třeba zadat zda vlhké či pevné."
+
+#: core/models.py:276 core/models.py:453 core/models.py:543 core/models.py:632
+msgid "Start time"
+msgstr "Okamžik zahájení"
+
+#: core/models.py:277 core/models.py:454 core/models.py:546 core/models.py:633
+msgid "End time"
+msgstr "Okamžik ukončení"
+
+#: core/models.py:279 core/models.py:456 core/models.py:549 core/models.py:635
+#: core/templates/core/feeding_list.html:34
+#: core/templates/core/sleep_list.html:30
+#: core/templates/core/timer_list.html:29
+#: core/templates/core/tummytime_list.html:29
+msgid "Duration"
+msgstr "Trvání"
+
+#: core/models.py:283
+msgid "Breast milk"
+msgstr "Mateřské mléko"
+
+#: core/models.py:284
+msgid "Formula"
+msgstr "Složení"
+
+#: core/models.py:289 core/templates/core/feeding_list.html:30
+msgid "Type"
+msgstr "Typ"
+
+#: core/models.py:293
+msgid "Bottle"
+msgstr "Láhev"
+
+#: core/models.py:294
+msgid "Left breast"
+msgstr "Levé prso"
+
+#: core/models.py:295
+msgid "Right breast"
+msgstr "Pravé prso"
+
+#: core/models.py:301 core/templates/core/feeding_list.html:29
+msgid "Method"
+msgstr "Metoda"
+
+#: core/models.py:239 core/models.py:303 core/models.py:428
+#: core/templates/core/diaperchange_list.html:31
+#: core/templates/core/pumping_list.html:29
+msgid "Amount"
+msgstr "Množství"
+
+#: core/models.py:243
+msgid "Only \"Bottle\" method is allowed with \"Formula\" type."
+msgstr "Ve spojitosti s typem „Složení“ je možné použít pouze metodu „Láhev“."
+
+#: core/models.py:540 core/templates/core/timer_list.html:25
+msgid "Name"
+msgstr "Název"
+
+#: core/models.py:564 core/templates/core/timer_form.html:4
+msgid "Timer"
+msgstr "Časovač"
+
+#: core/models.py:565 core/templates/core/timer_confirm_delete.html:9
+#: core/templates/core/timer_confirm_delete_inactive.html:9
+#: core/templates/core/timer_detail.html:8
+#: core/templates/core/timer_form.html:7 core/templates/core/timer_list.html:4
+#: core/templates/core/timer_list.html:7 core/templates/core/timer_list.html:12
+#: core/templates/core/timer_nav.html:10
+msgid "Timers"
+msgstr "Časovače"
+
+#: core/models.py:568
+msgid "Timer #{id}"
+msgstr "Časovač č.{id}"
+
+#: core/models.py:638 core/templates/core/tummytime_list.html:30
+msgid "Milestone"
+msgstr "Milník"
+
+#: core/models.py:141 core/models.py:341 core/models.py:371 core/models.py:675
+#: core/templates/core/bmi_list.html:25
+#: core/templates/core/feeding_list.html:25
+#: core/templates/core/head_circumference_list.html:25
+#: core/templates/core/height_list.html:25
+#: core/templates/core/weight_list.html:25 reports/graphs/bmi_change.py:28
+#: reports/graphs/diaperchange_amounts.py:37
+#: reports/graphs/diaperchange_types.py:49 reports/graphs/feeding_amounts.py:70
+#: reports/graphs/feeding_duration.py:56
+#: reports/graphs/head_circumference_change.py:28
+#: reports/graphs/height_change.py:28 reports/graphs/pumping_amounts.py:58
+#: reports/graphs/sleep_pattern.py:151 reports/graphs/sleep_totals.py:59
+#: reports/graphs/tummytime_duration.py:51 reports/graphs/weight_change.py:28
+msgid "Date"
+msgstr "Datum"
+
+#: core/templates/core/child_confirm_delete.html:4
+msgid "Delete a Child"
+msgstr "Smazat dítě"
+
+#: core/templates/core/child_confirm_delete.html:20
+msgid "To confirm this action. Type the full name of the child below."
+msgstr "Abyste tuto akci potvrdili, níže zadejte celé jméno dítěte."
+
+#: core/templates/core/child_detail.html:23
+#: dashboard/templates/dashboard/dashboard.html:32
+msgid "Born"
+msgstr "Narozen(a)"
+
+#: core/templates/core/child_detail.html:24
+#: dashboard/templates/dashboard/dashboard.html:33
+msgid "Age"
+msgstr "Věk"
+
+#: core/templates/timeline/_timeline.html:38
+msgid "%(since)s ago (%(time)s)"
+msgstr "před %(since)s (%(time)s)"
+
+#: core/templates/core/child_list.html:27
+msgid "Birth Date"
+msgstr "Datum narození"
+
+#: core/templates/core/child_list.html:67
+msgid "No children found."
+msgstr "Nenalezeno žádné dítě."
+
+#: core/templates/core/diaperchange_confirm_delete.html:4
+msgid "Delete a Diaper Change"
+msgstr "Vymazat výměnu plenky"
+
+#: core/templates/core/diaperchange_form.html:6
+msgid "Update a Diaper Change"
+msgstr "Aktualizovat výměnu plenky"
+
+#: core/templates/core/diaperchange_form.html:8
+#: core/templates/core/diaperchange_form.html:27
+msgid "Add a Diaper Change"
+msgstr "Přidat výměnu plenky"
+
+#: core/templates/core/diaperchange_form.html:17
+#: core/templates/core/feeding_form.html:17
+#: core/templates/core/note_form.html:17 core/templates/core/sleep_form.html:17
+#: core/templates/core/tummytime_form.html:17
+#: core/templates/core/widget_tag_editor.html:24
+msgid "Add"
+msgstr "Přidat"
+
+#: core/templates/core/diaperchange_list.html:77
+msgid "No diaper changes found."
+msgstr "Nenalezeny žádné výměny plenek."
+
+#: core/templates/core/diaperchange_list.html:63
+msgid "Add a Change"
+msgstr "Přidat výměnu"
+
+#: core/templates/core/feeding_confirm_delete.html:4
+msgid "Delete a Feeding"
+msgstr "Vymazat krmení"
+
+#: core/templates/core/feeding_form.html:6
+msgid "Update a Feeding"
+msgstr "Aktualizovat krmení"
+
+#: core/templates/core/feeding_form.html:8
+#: core/templates/core/feeding_form.html:27
+msgid "Add a Feeding"
+msgstr "Přidat krmení"
+
+#: core/templates/core/feeding_list.html:33
+msgid "Amt."
+msgstr "Množ."
+
+#: core/templates/core/feeding_list.html:82
+msgid "No feedings found."
+msgstr "Nenalezena žádná krmení."
+
+#: core/templates/core/note_confirm_delete.html:4
+msgid "Delete a Note"
+msgstr "Vymazat poznámku"
+
+#: core/templates/core/note_form.html:6
+msgid "Update a Note"
+msgstr "Aktualizovat poznámku"
+
+#: core/templates/core/note_form.html:8 core/templates/core/note_form.html:27
+msgid "Add a Note"
+msgstr "Přidat poznámku"
+
+#: core/templates/core/note_list.html:64
+msgid "No notes found."
+msgstr "Nenalezeny žádné poznámky."
+
+#: core/templates/core/sleep_confirm_delete.html:4
+msgid "Delete a Sleep Entry"
+msgstr "Vymazat položku spánku"
+
+#: core/templates/core/sleep_form.html:6
+msgid "Update a Sleep Entry"
+msgstr "Aktualizovat položku spánku"
+
+#: core/templates/core/sleep_form.html:8 core/templates/core/sleep_form.html:27
+msgid "Add a Sleep Entry"
+msgstr "Přidat položku spánku"
+
+#: core/templates/core/sleep_list.html:25
+#: core/templates/core/timer_form.html:12
+#: core/templates/core/timer_list.html:24
+#: core/templates/core/tummytime_list.html:24
+msgid "Start"
+msgstr "Začátek"
+
+#: core/templates/core/sleep_list.html:26
+#: core/templates/core/timer_list.html:30
+#: core/templates/core/tummytime_list.html:25
+msgid "End"
+msgstr "Konec"
+
+#: core/templates/core/sleep_list.html:31
+msgid "Nap"
+msgstr "Šlofík"
+
+#: core/templates/core/sleep_list.html:74
+msgid "No sleep entries found."
+msgstr "Nenalezeny žádné položky spánku."
+
+#: core/templates/core/timer_confirm_delete.html:5
+msgid "Delete %(object)s"
+msgstr "Vymazat %(object)s"
+
+#: core/templates/core/timer_detail.html:28
+msgid "Started"
+msgstr "Zahájeno"
+
+#: core/templates/core/timer_detail.html:30
+msgid "Stopped"
+msgstr "Ukončeno"
+
+#: core/templates/core/timer_detail.html:26
+msgid "%(timer)s created by %(object.user)s"
+msgstr "%(timer)s vytvořil(a) %(object.user)s"
+
+#: core/templates/core/timer_detail.html:63
+msgid "Timer actions"
+msgstr "Akce časovače"
+
+#: core/templates/core/timer_form.html:22
+#: core/templates/core/timer_list.html:15 core/templates/core/timer_nav.html:23
+msgid "Start Timer"
+msgstr "Spustit časovač"
+
+#: core/templates/core/timer_list.html:58
+msgid "No timer entries found."
+msgstr "Nenalezeny žádné položky časovačů."
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:32
+#: core/templates/core/timer_nav.html:18
+msgid "Quick Start Timer"
+msgstr "Časovač s rychlým startem"
+
+#: core/templates/core/timer_nav.html:28
+msgid "View Timers"
+msgstr "Zobrazit časovače"
+
+#: core/templates/core/timer_nav.html:32
+#: dashboard/templates/cards/timer_list.html:6
+msgid "Active Timers"
+msgstr "Aktivní časovače"
+
+#: core/templates/core/timer_nav.html:38
+#: dashboard/templates/cards/diaperchange_last.html:17
+#: dashboard/templates/cards/diaperchange_types.html:12
+#: dashboard/templates/cards/feeding_day.html:20
+#: dashboard/templates/cards/feeding_day.html:52
+#: dashboard/templates/cards/feeding_last.html:17
+#: dashboard/templates/cards/feeding_last_method.html:43
+#: dashboard/templates/cards/sleep_day.html:14
+#: dashboard/templates/cards/sleep_last.html:17
+#: dashboard/templates/cards/sleep_naps_day.html:18
+#: dashboard/templates/cards/tummytime_day.html:14
+msgid "None"
+msgstr "Žádné"
+
+#: core/templates/core/tummytime_confirm_delete.html:4
+msgid "Delete a Tummy Time Entry"
+msgstr "Smazat položku doby na břiše"
+
+#: core/templates/core/tummytime_form.html:6
+msgid "Update a Tummy Time Entry"
+msgstr "Aktualizovat položku doby na břiše"
+
+#: core/templates/core/tummytime_form.html:8
+#: core/templates/core/tummytime_form.html:27
+msgid "Add a Tummy Time Entry"
+msgstr "Přidat položku doby na břiše"
+
+#: core/templates/core/tummytime_list.html:67
+msgid "No tummy time entries found."
+msgstr "Nenalezeny žádné položky doby na břiše."
+
+#: core/templates/core/weight_confirm_delete.html:4
+msgid "Delete a Weight Entry"
+msgstr "Vymazat položku hmotnosti"
+
+#: core/templates/core/weight_form.html:8
+#: core/templates/core/weight_form.html:17
+#: core/templates/core/weight_form.html:27
+msgid "Add a Weight Entry"
+msgstr "Přidat položku hmotnosti"
+
+#: core/templates/core/weight_list.html:70
+msgid "No weight entries found."
+msgstr "Nenalezeny žádné položky hmotnosti."
+
+#: core/timeline.py:164
+msgid "%(child)s had a diaper change."
+msgstr "%(child)s – byla vyměněna plenka."
+
+#: core/timeline.py:145
+msgid "%(child)s started feeding."
+msgstr "%(child)s – zahájeno krmení."
+
+#: core/timeline.py:158
+msgid "%(child)s finished feeding."
+msgstr "%(child)s dokončeno krmení."
+
+#: core/timeline.py:91
+msgid "%(child)s fell asleep."
+msgstr "%(child)s usnul(a)."
+
+#: core/timeline.py:103
+msgid "%(child)s woke up."
+msgstr "%(child)s se vzbudil(a)."
+
+#: core/timeline.py:53
+msgid "%(child)s started tummy time!"
+msgstr "%(child)s zahájila dobu na břiše!"
+
+#: core/timeline.py:65
+msgid "%(child)s finished tummy time."
+msgstr "%(child)s ukončila dobu na břiše!"
+
+#: core/views.py:33
+msgid "%(model)s entry for %(child)s added!"
+msgstr "%(model)s položka pro %(child)s přidána!"
+
+#: core/views.py:35 core/views.py:308
+msgid "%(model)s entry added!"
+msgstr "%(model)s položka přidána!"
+
+#: core/views.py:61 core/views.py:316
+msgid "%(model)s entry for %(child)s updated."
+msgstr "%(model)s položka pro %(child)s aktualizována."
+
+#: core/views.py:63
+msgid "%(model)s entry updated."
+msgstr "%(model)s položka aktualizována."
+
+#: core/views.py:115
+msgid "%(first_name)s %(last_name)s added!"
+msgstr "%(first_name)s %(last_name)s přidán(a)!"
+
+#: core/views.py:478
+msgid "%(timer)s stopped."
+msgstr "%(timer)s zastaven."
+
+#: dashboard/templates/cards/diaperchange_last.html:6
+msgid "Last Diaper Change"
+msgstr "Poslední výměna plenky"
+
+#: dashboard/templates/cards/diaperchange_last.html:8
+#: dashboard/templates/cards/feeding_last.html:8
+#: dashboard/templates/cards/sleep_last.html:8
+#: dashboard/templates/cards/tummytime_last.html:8
+msgid "%(time)s ago"
+msgstr "před %(time)s"
+
+#: dashboard/templates/cards/tummytime_last.html:18
+msgid "Never"
+msgstr "Nikdy"
+
+#: dashboard/templates/cards/diaperchange_types.html:14
+msgid "Past Week"
+msgstr "Minulý týden"
+
+#: dashboard/templates/cards/diaperchange_types.html:27
+msgid "wet"
+msgstr "mokré"
+
+#: dashboard/templates/cards/diaperchange_types.html:35
+msgid "solid"
+msgstr "pevné"
+
+#: dashboard/templates/cards/diaperchange_types.html:49
+msgid "today"
+msgstr "dnes"
+
+#: dashboard/templates/cards/diaperchange_types.html:51
+msgid "yesterday"
+msgstr "včer"
+
+#: dashboard/templates/cards/diaperchange_types.html:53
+msgid "%(key)s days ago"
+msgstr "před %(key)s dny"
+
+#: dashboard/templates/cards/feeding_last.html:6
+msgid "Last Feeding"
+msgstr "Poslední krmení"
+
+#: dashboard/templates/cards/feeding_last_method.html:6
+msgid "Last Feeding Method"
+msgstr "Poslední metoda krmení"
+
+#: dashboard/templates/cards/sleep_day.html:6
+msgid "Today's Sleep"
+msgstr "Dnešní spánek"
+
+#: dashboard/templates/cards/sleep_day.html:11
+#: dashboard/templates/cards/sleep_naps_day.html:13
+#: dashboard/templates/cards/tummytime_day.html:11
+msgid "None yet today"
+msgstr "Dnes zatím žádné"
+
+#: dashboard/templates/cards/sleep_day.html:20
+msgid "%(count)s sleep entries"
+msgstr "%(count)s položek spánku"
+
+#: dashboard/templates/cards/sleep_last.html:4
+msgid "Last Slept"
+msgstr "Naposledy usnulo"
+
+#: dashboard/templates/cards/sleep_naps_day.html:6
+msgid "Today's Naps"
+msgstr "Dnešní šlofíky"
+
+#: dashboard/templates/cards/sleep_naps_day.html:12
+msgid "%(count)s nap%(plural)s"
+msgstr "%(count)s šlofík%(plural)s"
+
+#: dashboard/templates/cards/statistics.html:7
+msgid "Statistics"
+msgstr "Statistiky"
+
+#: dashboard/templates/cards/statistics.html:25
+msgid "Not enough data"
+msgstr "Nedostatek dat"
+
+#: dashboard/templates/cards/timer_list.html:12
+msgid "%(count)s active timer%(plural)s"
+msgstr "%(count)s aktivních časovačů%(plural)s"
+
+#: dashboard/templates/cards/timer_list.html:19
+msgid "Started by %(instance.user)s at %(start)s"
+msgstr "Zahájil(a) %(instance.user)s v %(start)s"
+
+#: dashboard/templates/cards/tummytime_day.html:6
+msgid "Today's Tummy Time"
+msgstr "Dnešní doba na břiše"
+
+#: dashboard/templates/cards/tummytime_day.html:22
+msgid "%(duration)s at %(end)s"
+msgstr "%(duration)s v %(end)s"
+
+#: dashboard/templates/cards/tummytime_last.html:6
+msgid "Last Tummy Time"
+msgstr "Naposledy na břiše"
+
+#: dashboard/templates/dashboard/child_button_group.html:3
+msgid "Child actions"
+msgstr "Akce dítěte"
+
+#: reports/templates/reports/diaperchange_types.html:4
+#: reports/templates/reports/diaperchange_types.html:8
+#: reports/templates/reports/report_list.html:12
+msgid "Diaper Change Types"
+msgstr "Typy výměny plenky"
+
+#: reports/templates/reports/diaperchange_lifetimes.html:4
+#: reports/templates/reports/diaperchange_lifetimes.html:8
+#: reports/templates/reports/report_list.html:13
+msgid "Diaper Lifetimes"
+msgstr "Životnosti plenek"
+
+#: reports/templates/reports/report_list.html:15
+msgid "Feeding Durations (Average)"
+msgstr "Doba trvání krmení (průměr)"
+
+#: reports/templates/reports/report_list.html:19
+#: reports/templates/reports/sleep_pattern.html:4
+#: reports/templates/reports/sleep_pattern.html:8
+msgid "Sleep Pattern"
+msgstr "Spánkové vzorce"
+
+#: reports/templates/reports/report_list.html:20
+#: reports/templates/reports/sleep_totals.html:4
+#: reports/templates/reports/sleep_totals.html:8
+msgid "Sleep Totals"
+msgstr "Mluvení ze spaní"
+
+#: dashboard/templatetags/cards.py:420
+msgid "Diaper change frequency"
+msgstr "Četnost výměn plenek"
+
+#: dashboard/templatetags/cards.py:466
+msgid "Feeding frequency"
+msgstr "Četnost krmení"
+
+#: dashboard/templatetags/cards.py:328
+msgid "Average nap duration"
+msgstr "Průměrná výdrž plenky"
+
+#: dashboard/templatetags/cards.py:335
+msgid "Average naps per day"
+msgstr "Průměrně šlofíků za den"
+
+#: dashboard/templatetags/cards.py:345
+msgid "Average sleep duration"
+msgstr "Průměrná doba spánku"
+
+#: dashboard/templatetags/cards.py:352
+msgid "Average awake duration"
+msgstr "Průměrná doba bdělosti"
+
+#: dashboard/templatetags/cards.py:362
+msgid "Weight change per week"
+msgstr "Změna váhy za týden"
+
+#: reports/graphs/diaperchange_lifetimes.py:35
+msgid "Diaper Lifetimes"
+msgstr "Životnosti plenek"
+
+#: reports/graphs/diaperchange_lifetimes.py:36
+msgid "Time between changes (hours)"
+msgstr "Doba mezi výměnami (hodiny)"
+
+#: reports/graphs/diaperchange_types.py:41 reports/graphs/feeding_amounts.py:58
+msgid "Total"
+msgstr "Celkem"
+
+#: reports/graphs/diaperchange_types.py:48
+msgid "Diaper Change Types"
+msgstr "Typy výměny plenky"
+
+#: reports/graphs/diaperchange_types.py:51
+msgid "Number of changes"
+msgstr "Počet výměn"
+
+#: reports/graphs/feeding_duration.py:38
+msgid "Average duration"
+msgstr "Průměrné trvání"
+
+#: reports/graphs/feeding_duration.py:46
+msgid "Total feedings"
+msgstr "Celkem krmení"
+
+#: reports/graphs/feeding_duration.py:55
+msgid "Average Feeding Durations"
+msgstr "Průměrná trvání krmení"
+
+#: reports/graphs/feeding_duration.py:58
+msgid "Average duration (minutes)"
+msgstr "Průměrné trvání (minuty)"
+
+#: reports/graphs/feeding_duration.py:60
+msgid "Number of feedings"
+msgstr "Počet krmení"
+
+#: reports/graphs/sleep_pattern.py:148
+msgid "Sleep Pattern"
+msgstr "Spánkové vzorce"
+
+#: reports/graphs/sleep_pattern.py:165
+msgid "Time of day"
+msgstr "Denní doba"
+
+#: reports/graphs/sleep_totals.py:48
+msgid "Total sleep"
+msgstr "Celkem spánku"
+
+#: reports/graphs/sleep_totals.py:58
+msgid "Sleep Totals"
+msgstr "Celkem spánku"
+
+#: reports/graphs/sleep_totals.py:61
+msgid "Hours of sleep"
+msgstr "Hodin spánku"
+
+#: reports/graphs/weight_change.py:27
+msgid "Weight"
+msgstr "Váha"
+
+#: reports/templates/reports/feeding_duration.html:4
+#: reports/templates/reports/feeding_duration.html:8
+msgid "Average Feeding Durations"
+msgstr "Průměrná trvání krmení"
+
+#: dashboard/templates/dashboard/child_button_group.html:12
+#: reports/templates/reports/base.html:9
+#: reports/templates/reports/report_list.html:4
+msgid "Reports"
+msgstr "Výkazy"
+
+#: reports/templates/reports/report_base.html:19
+msgid "There is no enough data to generate this report."
+msgstr "Nedostatek údajů pro vytvoření výkazu."
+
+#: core/models.py:296
+msgid "Both breasts"
+msgstr "Oba prsy"
+
+#: babybuddy/settings/base.py:173
+msgid "German"
+msgstr "němčina"
+
+#: babybuddy/settings/base.py:177
+msgid "Spanish"
+msgstr "španělština"
+
+#: babybuddy/settings/base.py:178
+msgid "Swedish"
+msgstr "švédština"
+
+#: babybuddy/settings/base.py:179
+msgid "Turkish"
+msgstr "turečtina"
+
+#: babybuddy/templates/error/403.html:9
+msgid "You do not have permission to access this resource. Contact a site administrator for assistance."
+msgstr "Nemáte přístup k tomuto prostředku. Obraťte se na správce webu o asistenci."
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:75
+#: babybuddy/templates/babybuddy/nav-dropdown.html:179 core/models.py:506
+#: core/models.py:519 core/models.py:520 core/models.py:523
+#: core/templates/core/temperature_confirm_delete.html:7
+#: core/templates/core/temperature_form.html:13
+#: core/templates/core/temperature_list.html:4
+#: core/templates/core/temperature_list.html:7
+#: core/templates/core/temperature_list.html:12
+#: core/templates/core/temperature_list.html:29
+msgid "Temperature"
+msgstr "Teplota"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:185
+msgid "Temperature reading"
+msgstr "Teplotní údaj"
+
+#: babybuddy/templates/babybuddy/welcome.html:14
+msgid "Learn about and predict baby's needs without (as much) guess work by using Baby Buddy to track —"
+msgstr "Zjistěte a předvídejte potřeby dítěte bez (přílišného) hádání pomocí Baby Buddy pro sledování —"
+
+#: babybuddy/templates/babybuddy/welcome.html:56
+msgid "As the amount of entries grows, Baby Buddy will help parents and caregivers to identify small patterns in baby's habits using the dashboard and graphs. Baby Buddy is mobile-friendly and uses a dark theme to help weary moms and dads with 2AM feedings and changings. To get started, just click the button below to add your first (or second, third, etc.) child!"
+msgstr "Jak počet položek roste, Baby Buddy pomůže rodičům a ošetřovatelům identifikovat malé vzorce ve zvycích dítěte pomocí přehledu a grafů. Baby Buddy je dobře použitelné na mobilních zařízeních a používá tmavý motiv vzhledu, aby se pomohlo unaveným mámám a tátům s krmeními a přebalováními ve dvě v noci. Začít je snadné – stačí jen kliknou na tlačítko níže a přidat své první (nebo druhé, třetí, etc.) dítě!"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:13
+msgid "Oh snap! The two passwords did not match. Please try again."
+msgstr "Kruci! Zadání hesla se neshodují. Zkuste to prosím znovu."
+
+#: babybuddy/templates/registration/password_reset_done.html:9
+msgid "We've emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly."
+msgstr "Poslali jsme vám pokyny jak si nastavit heslo, pokud existuje účet, u kterého je zadán e-mail, který jste uvedli. Měly byste je zakrátko obdržet."
+
+#: babybuddy/templates/registration/password_reset_done.html:15
+msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder."
+msgstr "Pokud e-mail neobdržíte, ověřte, že jste zadali adresu, pomocí které jste se zaregistrovali a podívejte se do složky s nevyžádanou poštou (spam)."
+
+#: babybuddy/templates/registration/password_reset_form.html:9
+msgid "Enter your account email address in the form below. If the address is valid, you will receive instructions for resetting your password."
+msgstr "Do níže uvedeného formuláře zadejte e-mailovou adresu svého účtu. Pokud je adresa platná, obdržíte na ni pokyny pro resetování svého hesla."
+
+#: core/models.py:285
+msgid "Fortified breast milk"
+msgstr "Mateřské mléko s doplňkem"
+
+#: core/templates/core/temperature_confirm_delete.html:4
+msgid "Delete a Temperature Reading"
+msgstr "Smazat teplotní údaj"
+
+#: core/templates/core/temperature_form.html:8
+#: core/templates/core/temperature_form.html:17
+msgid "Add a Temperature Reading"
+msgstr "Přidat teplotní údaj"
+
+#: core/templates/core/temperature_form.html:27
+msgid "Add a Temperature Entry"
+msgstr "Přidat položku teploty"
+
+#: core/templates/core/temperature_list.html:70
+msgid "No temperature entries found."
+msgstr "Nenalezeny žádné položky teplot."
+
+#: core/templates/core/timer_detail.html:34
+msgid "%(timer)s created by %(user)s"
+msgstr "%(timer)s vytvořil(a) %(user)s"
+
+#: core/utils.py:40
+msgid "%(hours)s hour"
+msgid_plural "%(hours)s hours"
+msgstr[0] "%(hours)s hodina"
+msgstr[1] "%(hours)s hodiny"
+msgstr[2] "%(hours)s hodin"
+
+#: core/utils.py:44
+msgid "%(minutes)s minute"
+msgid_plural "%(minutes)s minutes"
+msgstr[0] "%(minutes)s minuta"
+msgstr[1] "%(minutes)s minuty"
+msgstr[2] "%(minutes)s minut"
+
+#: core/utils.py:50
+msgid "%(seconds)s second"
+msgid_plural "%(seconds)s seconds"
+msgstr[0] "%(seconds)s sekunda"
+msgstr[1] "%(seconds)s sekundy"
+msgstr[2] "%(seconds)s sekund"
+
+#: core/views.py:69 core/views.py:146
+msgid "%(model)s entry deleted."
+msgstr "%(model)s položka smazána."
+
+#: core/views.py:366
+msgid "%(model)s reading added!"
+msgstr "%(model)s údaj přidán!"
+
+#: core/views.py:374
+msgid "%(model)s reading for %(child)s updated."
+msgstr "%(model)s údaj pro %(child)s aktualizován."
+
+#: dashboard/templates/cards/timer_list.html:27
+msgid "Started by %(user)s at %(start)s"
+msgstr "Zahájil(a) %(user)s v %(start)s"
+
+#: reports/templates/reports/feeding_amounts.html:4
+#: reports/templates/reports/feeding_amounts.html:8
+#: reports/templates/reports/report_list.html:14
+msgid "Feeding Amounts"
+msgstr "Počty krmení"
+
+#: reports/graphs/feeding_amounts.py:27
+msgid "Total feeding amount"
+msgstr "Celkový počet krmení"
+
+#: reports/graphs/feeding_amounts.py:36
+msgid "Total Feeding Amounts"
+msgstr "Celkové počty krmení"
+
+#: reports/graphs/feeding_amounts.py:72
+msgid "Feeding amount"
+msgstr "Počty krmení"
+
+#: reports/templates/reports/report_base.html:17
+msgid "There is not enough data to generate this report."
+msgstr "Pro vytvoření tohoto výkazu není dostatek dat."
+
+#: babybuddy/models.py:69
+msgid "Timezone"
+msgstr "Časové pásmo"
+
+#: babybuddy/templates/admin/base_site.html:4
+#: babybuddy/templates/admin/base_site.html:7
+#: babybuddy/templates/babybuddy/nav-dropdown.html:359
+msgid "Database Admin"
+msgstr "Správce databáze"
+
+#: core/templates/core/child_list.html:15
+msgid "Add Child"
+msgstr "Přidat dítě"
+
+#: core/templates/core/diaperchange_list.html:15
+msgid "Add Diaper Change"
+msgstr "Přidat výměnu plenky"
+
+#: core/templates/core/feeding_list.html:15
+msgid "Add Feeding"
+msgstr "Přidat krmení"
+
+#: core/templates/core/note_list.html:15
+msgid "Add Note"
+msgstr "Přidat poznámku"
+
+#: core/templates/core/sleep_list.html:15
+msgid "Add Sleep"
+msgstr "Přidat spánek"
+
+#: core/templates/core/temperature_list.html:15
+msgid "Add Temperature Reading"
+msgstr "Přidat teplotní údaj"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:5
+msgid "Delete All Inactive Timers"
+msgstr "Smazat všechny neaktivní časovače"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:10
+msgid "Delete Inactive"
+msgstr "Smazat neaktivní"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:17
+msgid "Are you sure you want to delete %(number)s inactive timer%(plural)s?"
+msgstr "Opravdu chcete smazat %(number)s neaktivních časovač%(plural)s?"
+
+#: core/templates/core/timer_list.html:68
+msgid "Delete Inactive Timers"
+msgstr "Smazat neaktivní časovače"
+
+#: core/templates/core/tummytime_list.html:15
+msgid "Add Tummy Time"
+msgstr "Přidat dobu na břiše"
+
+#: core/templates/core/weight_list.html:15
+msgid "Add Weight"
+msgstr "Přidat váhu"
+
+#: core/views.py:501
+msgid "All inactive timers deleted."
+msgstr "Všechny neaktivní časovače smazány."
+
+#: core/views.py:511
+msgid "No inactive timers exist."
+msgstr "Neexistuje žádný aktivní časovač."
+
+#: dashboard/templates/cards/feeding_last_method.html:19
+msgid "most recent"
+msgstr "nejnovější"
+
+#: dashboard/templates/cards/feeding_last_method.html:21
+msgid "%(n)s feeding%(plural)s ago"
+msgstr "%(n)s krmení před%(plural)s"
+
+#: dashboard/templates/cards/sleep_last.html:6
+msgid "Last Sleep"
+msgstr "Poslední spánek"
+
+#: reports/templates/reports/report_list.html:11
+msgid "Diaper Change Amounts"
+msgstr "Počty výměn plenek"
+
+#: reports/graphs/diaperchange_amounts.py:27
+msgid "Diaper change amount"
+msgstr "Počet výměn plenky"
+
+#: reports/graphs/diaperchange_amounts.py:36
+msgid "Diaper Change Amounts"
+msgstr "Počty výměn plenek"
+
+#: reports/graphs/diaperchange_amounts.py:39
+msgid "Change amount"
+msgstr "Počet výměn"
+
+#: reports/templates/reports/diaperchange_amounts.html:4
+#: reports/templates/reports/diaperchange_amounts.html:8
+msgid "Diaper Amounts"
+msgstr "Počet plenek"
+
+#: babybuddy/models.py:21
+msgid "If supported by browser, the dashboard will only refresh when visible, and also when receiving focus."
+msgstr ""
+
+#: babybuddy/models.py:40
+msgid "Hide Empty Dashboard Cards"
+msgstr ""
+
+#: babybuddy/models.py:43
+msgid "Hide data older than"
+msgstr ""
+
+#: babybuddy/models.py:45
+msgid "This setting controls which data will be shown in the dashboard."
+msgstr ""
+
+#: babybuddy/models.py:51
+msgid "show all data"
+msgstr ""
+
+#: babybuddy/models.py:52
+msgid "1 day"
+msgstr ""
+
+#: babybuddy/models.py:53
+msgid "2 days"
+msgstr ""
+
+#: babybuddy/models.py:54
+msgid "3 days"
+msgstr ""
+
+#: babybuddy/models.py:55
+msgid "1 week"
+msgstr ""
+
+#: babybuddy/models.py:56
+msgid "4 weeks"
+msgstr ""
+
+#: babybuddy/settings/base.py:168
+msgid "Dutch"
+msgstr ""
+
+#: babybuddy/settings/base.py:172
+msgid "Finnish"
+msgstr ""
+
+#: babybuddy/settings/base.py:174
+msgid "Italian"
+msgstr ""
+
+#: babybuddy/settings/base.py:175
+msgid "Polish"
+msgstr ""
+
+#: babybuddy/settings/base.py:176
+msgid "Portuguese"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:118
+#: core/templates/timeline/timeline.html:4
+#: core/templates/timeline/timeline.html:7
+#: dashboard/templates/dashboard/child_button_group.html:9
+msgid "Timeline"
+msgstr ""
+
+#: core/models.py:286
+msgid "Solid food"
+msgstr ""
+
+#: core/models.py:297
+msgid "Parent fed"
+msgstr ""
+
+#: core/models.py:298
+msgid "Self fed"
+msgstr ""
+
+#: core/templates/core/diaperchange_list.html:29
+msgid "Contents"
+msgstr ""
+
+#: core/templates/core/timer_detail.html:77
+msgid "Restart timer"
+msgstr ""
+
+#: core/templates/core/timer_detail.html:84
+msgid "Delete timer"
+msgstr ""
+
+#: core/templatetags/datetime.py:60
+msgid "Today"
+msgstr ""
+
+#: core/templatetags/datetime.py:75
+msgid "{}, {}"
+msgstr ""
+
+#: core/templatetags/duration.py:25
+msgid "0 days"
+msgstr ""
+
+#: core/timeline.py:137
+msgid "Amount: %(amount).0f"
+msgstr ""
+
+#: core/timeline.py:157
+msgid "Contents: %(contents)s"
+msgstr ""
+
+#: dashboard/templates/cards/diaperchange_last.html:12
+#: dashboard/templates/cards/feeding_last.html:12
+#: dashboard/templates/cards/sleep_last.html:12
+#: dashboard/templates/cards/tummytime_last.html:13
+msgid "%(since)s ago
%(time)s"
+msgstr ""
+
+#: dashboard/templates/cards/feeding_day.html:6
+msgid "Today's Feeding"
+msgstr ""
+
+#: dashboard/templates/cards/feeding_day.html:20
+msgid "%(count)s feeding entries"
+msgstr ""
+
+#: dashboard/templates/cards/statistics.html:42
+msgid "No data yet"
+msgstr ""
+
+#: reports/templates/reports/report_list.html:21
+msgid "Tummy Time Durations (Sum)"
+msgstr ""
+
+#: core/templates/timeline/_timeline.html:61
+#: dashboard/templates/dashboard/child_button_group.html:20
+msgid "Edit"
+msgstr ""
+
+#: dashboard/templatetags/cards.py:456
+msgid "Feeding frequency (past 3 days)"
+msgstr ""
+
+#: dashboard/templatetags/cards.py:460
+msgid "Feeding frequency (past 2 weeks)"
+msgstr ""
+
+#: reports/graphs/tummytime_duration.py:34
+msgid "Total duration"
+msgstr ""
+
+#: reports/graphs/tummytime_duration.py:41
+#: reports/graphs/tummytime_duration.py:55
+msgid "Number of sessions"
+msgstr ""
+
+#: reports/graphs/tummytime_duration.py:50
+msgid "Total Tummy Time Durations"
+msgstr ""
+
+#: reports/graphs/tummytime_duration.py:53
+msgid "Total duration (minutes)"
+msgstr ""
+
+#: reports/templates/reports/tummytime_duration.html:4
+#: reports/templates/reports/tummytime_duration.html:8
+msgid "Total Tummy Time Durations"
+msgstr ""
+
+#: babybuddy/settings/base.py:169
+msgid "English (US)"
+msgstr ""
+
+#: babybuddy/settings/base.py:170
+msgid "English (UK)"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:171
+msgid "Measurements"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:207 core/models.py:369
+#: core/models.py:381 core/models.py:382 core/models.py:385
+#: core/templates/core/height_confirm_delete.html:7
+#: core/templates/core/height_form.html:13
+#: core/templates/core/height_list.html:4
+#: core/templates/core/height_list.html:7
+#: core/templates/core/height_list.html:12
+#: core/templates/core/height_list.html:29 reports/graphs/height_change.py:19
+#: reports/graphs/height_change.py:30
+#: reports/templates/reports/height_change.html:4
+#: reports/templates/reports/height_change.html:8
+#: reports/templates/reports/report_list.html:17
+msgid "Height"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:213
+msgid "Height entry"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:221 core/models.py:338
+#: core/models.py:351 core/models.py:352 core/models.py:355
+#: core/templates/core/head_circumference_confirm_delete.html:7
+#: core/templates/core/head_circumference_form.html:13
+#: core/templates/core/head_circumference_list.html:4
+#: core/templates/core/head_circumference_list.html:7
+#: core/templates/core/head_circumference_list.html:12
+#: core/templates/core/head_circumference_list.html:29
+#: reports/graphs/head_circumference_change.py:19
+#: reports/graphs/head_circumference_change.py:30
+#: reports/templates/reports/head_circumference_change.html:4
+#: reports/templates/reports/head_circumference_change.html:8
+#: reports/templates/reports/report_list.html:16
+msgid "Head Circumference"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:227
+msgid "Head Circumference entry"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:235 core/models.py:139
+#: core/models.py:151 core/models.py:152 core/models.py:155
+#: core/templates/core/bmi_confirm_delete.html:7
+#: core/templates/core/bmi_form.html:13 core/templates/core/bmi_list.html:4
+#: core/templates/core/bmi_list.html:7 core/templates/core/bmi_list.html:12
+#: core/templates/core/bmi_list.html:29 reports/graphs/bmi_change.py:19
+#: reports/graphs/bmi_change.py:30 reports/templates/reports/bmi_change.html:4
+#: reports/templates/reports/bmi_change.html:8
+msgid "BMI"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:241
+msgid "BMI entry"
+msgstr ""
+
+#: core/models.py:452
+msgid "Napping"
+msgstr ""
+
+#: core/templates/core/bmi_confirm_delete.html:4
+msgid "Delete a BMI Entry"
+msgstr ""
+
+#: core/templates/core/bmi_form.html:8 core/templates/core/bmi_form.html:17
+#: core/templates/core/bmi_form.html:27
+msgid "Add a BMI Entry"
+msgstr ""
+
+#: core/templates/core/bmi_list.html:15
+msgid "Add BMI"
+msgstr ""
+
+#: core/templates/core/bmi_list.html:70
+msgid "No bmi entries found."
+msgstr ""
+
+#: core/templates/core/head_circumference_confirm_delete.html:4
+msgid "Delete a Head Circumference Entry"
+msgstr ""
+
+#: core/templates/core/head_circumference_form.html:8
+#: core/templates/core/head_circumference_form.html:17
+#: core/templates/core/head_circumference_form.html:27
+msgid "Add a Head Circumference Entry"
+msgstr ""
+
+#: core/templates/core/head_circumference_list.html:15
+msgid "Add Head Circumference"
+msgstr ""
+
+#: core/templates/core/head_circumference_list.html:70
+msgid "No head circumference entries found."
+msgstr ""
+
+#: core/templates/core/height_confirm_delete.html:4
+msgid "Delete a Height Entry"
+msgstr ""
+
+#: core/templates/core/height_form.html:8
+#: core/templates/core/height_form.html:17
+#: core/templates/core/height_form.html:27
+msgid "Add a Height Entry"
+msgstr ""
+
+#: core/templates/core/height_list.html:15
+msgid "Add Height"
+msgstr ""
+
+#: core/templates/core/height_list.html:70
+msgid "No height entries found."
+msgstr ""
+
+#: core/templates/timeline/_timeline.html:44
+msgid "Duration: %(duration)s"
+msgstr ""
+
+#: core/templates/timeline/_timeline.html:53
+msgid "%(since)s since previous"
+msgstr ""
+
+#: core/templates/timeline/_timeline.html:85
+msgid "No events"
+msgstr ""
+
+#: core/timeline.py:185
+msgid "%(child)s had a %(type)s diaper change."
+msgstr ""
+
+#: dashboard/templatetags/cards.py:372
+msgid "Height change per week"
+msgstr ""
+
+#: dashboard/templatetags/cards.py:382
+msgid "Head circumference change per week"
+msgstr ""
+
+#: dashboard/templatetags/cards.py:392
+msgid "BMI change per week"
+msgstr ""
+
+#: reports/graphs/bmi_change.py:27
+msgid "BMI"
+msgstr ""
+
+#: reports/graphs/feeding_amounts.py:69
+msgid "Total Feeding Amount by Type"
+msgstr ""
+
+#: reports/graphs/head_circumference_change.py:27
+msgid "Head Circumference"
+msgstr ""
+
+#: reports/graphs/height_change.py:27
+msgid "Height"
+msgstr ""
+
+#: babybuddy/settings/base.py:167
+msgid "Chinese (simplified)"
+msgstr ""
+
+#: babybuddy/templates/error/400.html:4 babybuddy/templates/error/400.html:7
+msgid "Bad Request"
+msgstr ""
+
+#: babybuddy/templates/error/403_csrf_bad_origin.html:14
+msgid "How to Fix"
+msgstr ""
+
+#: babybuddy/templates/error/403_csrf_bad_origin.html:15
+msgid "Add %(origin)s to the CSRF_TRUSTED_ORIGINS
environment variable. If multiple origins are required separate with commas."
+msgstr ""
+
+#: babybuddy/templates/error/404.html:4 babybuddy/templates/error/404.html:7
+msgid "Page Not Found"
+msgstr ""
+
+#: babybuddy/templates/error/404.html:9
+msgid "The path %(request_path)s
does not exist."
+msgstr ""
+
+#: babybuddy/templates/error/500.html:4 babybuddy/templates/error/500.html:7
+msgid "Server Error"
+msgstr ""
+
+#: babybuddy/templates/error/base.html:14
+msgid "Return to Baby Buddy"
+msgstr ""
+
+#: babybuddy/views.py:43
+msgid "Forbidden"
+msgstr ""
+
+#: babybuddy/views.py:44
+msgid "CSRF verification failed. Request aborted."
+msgstr ""
+
+#: babybuddy/settings/base.py:166
+msgid "Catalan"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:93
+#: babybuddy/templates/babybuddy/nav-dropdown.html:316 core/models.py:437
+#: core/models.py:438 core/models.py:441
+#: core/templates/core/pumping_confirm_delete.html:7
+#: core/templates/core/pumping_form.html:13
+#: core/templates/core/pumping_list.html:4
+#: core/templates/core/pumping_list.html:7
+#: core/templates/core/pumping_list.html:12
+#: reports/templates/reports/pumping_amounts.html:4
+#: reports/templates/reports/pumping_amounts.html:8
+msgid "Pumping"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:322
+msgid "Pumping entry"
+msgstr ""
+
+#: core/filters.py:11 core/models.py:96 core/models.py:115
+msgid "Tag"
+msgstr ""
+
+#: core/forms.py:136
+msgid "Click on the tags to add (+) or remove (-) tags or use the text editor to create new tags."
+msgstr ""
+
+#: core/models.py:90
+msgid "Last used"
+msgstr ""
+
+#: core/models.py:97 core/templates/core/bmi_list.html:30
+#: core/templates/core/diaperchange_list.html:32
+#: core/templates/core/feeding_list.html:35
+#: core/templates/core/head_circumference_list.html:30
+#: core/templates/core/height_list.html:30
+#: core/templates/core/note_list.html:30 core/templates/core/sleep_list.html:32
+#: core/templates/core/temperature_list.html:30
+#: core/templates/core/tummytime_list.html:31
+#: core/templates/core/weight_list.html:30
+msgid "Tags"
+msgstr ""
+
+#: core/templates/core/pumping_confirm_delete.html:4
+msgid "Delete a Pumping Entry"
+msgstr ""
+
+#: core/templates/core/pumping_form.html:8
+#: core/templates/core/pumping_form.html:17
+#: core/templates/core/pumping_form.html:27
+msgid "Add a Pumping Entry"
+msgstr ""
+
+#: core/templates/core/pumping_list.html:15
+msgid "Add Pumping Entry"
+msgstr ""
+
+#: core/templates/core/pumping_list.html:66
+msgid "No pumping entries found."
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:22
+msgid "Tag name"
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:27
+msgid "Recently used:"
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:45
+msgctxt "Error modal"
+msgid "Error"
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:50
+msgctxt "Error modal"
+msgid "An error ocurred."
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:51
+msgctxt "Error modal"
+msgid "Invalid tag name."
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:52
+msgctxt "Error modal"
+msgid "Failed to create tag."
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:53
+msgctxt "Error modal"
+msgid "Failed to obtain tag data."
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:58
+msgctxt "Error modal"
+msgid "Close"
+msgstr ""
+
+#: dashboard/templates/cards/feeding_day.html:32
+msgid " %(since)s
"
+msgstr ""
+
+#: dashboard/templatetags/cards.py:410
+msgid "Diaper change frequency (past 3 days)"
+msgstr ""
+
+#: dashboard/templatetags/cards.py:414
+msgid "Diaper change frequency (past 2 weeks)"
+msgstr ""
+
+#: reports/graphs/pumping_amounts.py:57
+msgid "Total Pumping Amount"
+msgstr ""
+
+#: reports/graphs/pumping_amounts.py:60
+msgid "Pumping Amount"
+msgstr ""
+
+#: reports/templates/reports/report_list.html:10
+msgid "Body Mass Index (BMI)"
+msgstr ""
+
+#: reports/templates/reports/report_list.html:18
+msgid "Pumping Amounts"
+msgstr ""
+
+#: core/templates/core/timer_confirm_delete_inactive.html:17
+msgid "Are you sure you want to delete %(number)s inactive timer?"
+msgid_plural "Are you sure you want to delete %(number)s inactive timers?"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: dashboard/templates/cards/feeding_day.html:25
+msgid "%(counter)s feeding"
+msgid_plural "%(counter)s feedings"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: dashboard/templates/cards/feeding_last_method.html:21
+msgid "%(n)s feeding ago"
+msgid_plural "%(n)s feedings ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: dashboard/templates/cards/sleep_naps_day.html:12
+msgid "%(count)s nap"
+msgid_plural "%(count)s naps"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: dashboard/templates/cards/timer_list.html:12
+msgid "%(count)s active timer"
+msgid_plural "%(count)s active timers"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
diff --git a/locale/da/LC_MESSAGES/django.mo b/locale/da/LC_MESSAGES/django.mo
new file mode 100644
index 00000000..d09c021a
Binary files /dev/null and b/locale/da/LC_MESSAGES/django.mo differ
diff --git a/locale/da/LC_MESSAGES/django.po b/locale/da/LC_MESSAGES/django.po
new file mode 100644
index 00000000..8dec5ea7
--- /dev/null
+++ b/locale/da/LC_MESSAGES/django.po
@@ -0,0 +1,2131 @@
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: POEditor.com\n"
+"Project-Id-Version: Baby Buddy\n"
+"Language: da\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: babybuddy/admin.py:12 babybuddy/admin.py:13
+#: babybuddy/templates/babybuddy/nav-dropdown.html:347
+#: babybuddy/templates/babybuddy/user_settings_form.html:8
+msgid "Settings"
+msgstr "Indstillinger"
+
+#: babybuddy/admin.py:17 babybuddy/templates/babybuddy/nav-dropdown.html:111
+#: babybuddy/templates/babybuddy/user_settings_form.html:61
+#: dashboard/templates/dashboard/child.html:4
+#: dashboard/templates/dashboard/child.html:9
+#: dashboard/templates/dashboard/child_button_group.html:6
+#: dashboard/templates/dashboard/dashboard.html:4
+#: dashboard/templates/dashboard/dashboard.html:7
+msgid "Dashboard"
+msgstr "Dashboard"
+
+#: babybuddy/models.py:19
+msgid "Refresh rate"
+msgstr "Opdaterings rate"
+
+#: babybuddy/models.py:21
+msgid "This setting will only be used when a browser does not support refresh on focus."
+msgstr "Denne indstilling vil kun blive brugt når en browser ikke understøtter opdatering på fokusering."
+
+#: babybuddy/models.py:28
+msgid "disabled"
+msgstr "slået fra"
+
+#: babybuddy/models.py:29
+msgid "1 min."
+msgstr "1 min."
+
+#: babybuddy/models.py:30
+msgid "2 min."
+msgstr "2 min."
+
+#: babybuddy/models.py:31
+msgid "3 min."
+msgstr "3 min."
+
+#: babybuddy/models.py:32
+msgid "4 min."
+msgstr "4 min."
+
+#: babybuddy/models.py:33
+msgid "5 min."
+msgstr "5 min."
+
+#: babybuddy/models.py:34
+msgid "10 min."
+msgstr "10 min."
+
+#: babybuddy/models.py:35
+msgid "15 min."
+msgstr "15 min."
+
+#: babybuddy/models.py:36
+msgid "30 min."
+msgstr "30 min."
+
+#: babybuddy/models.py:63
+msgid "Language"
+msgstr "Sprog"
+
+#: babybuddy/models.py:73
+msgid "{user}'s Settings"
+msgstr "{user}'s indstillinger"
+
+#: babybuddy/settings/base.py:171
+msgid "English"
+msgstr "Engelsk"
+
+#: babybuddy/settings/base.py:171
+msgid "French"
+msgstr "Fransk"
+
+#: babybuddy/templates/error/403.html:4 babybuddy/templates/error/403.html:7
+msgid "Permission Denied"
+msgstr "Adgang nægtet"
+
+#: babybuddy/templates/403.html:12
+msgid "You do not have permission to access this resource.\n"
+" Contact a site administrator for assistance."
+msgstr "Du har ikke adgang til denne ressource. Kontakt administratoreren for hjælp."
+
+#: babybuddy/templates/babybuddy/base.html:36
+msgid "Home"
+msgstr "Hjem"
+
+#: babybuddy/templates/babybuddy/filter.html:18
+msgid "Filter"
+msgstr "Filter"
+
+#: babybuddy/templates/babybuddy/filter.html:19
+msgid "Reset"
+msgstr "Nulstil"
+
+#: babybuddy/templates/babybuddy/filter.html:32
+msgid "Filters"
+msgstr "Filtere"
+
+#: babybuddy/templates/babybuddy/form.html:14
+#: babybuddy/templates/babybuddy/user_settings_form.html:89
+msgid "Submit"
+msgstr "Tilføj"
+
+#: babybuddy/templates/babybuddy/messages.html:18
+#: babybuddy/templates/babybuddy/user_settings_form.html:19
+msgid "Error: %(error)s"
+msgstr "Fejl:%(error)s"
+
+#: babybuddy/templates/babybuddy/messages.html:23
+msgid "Error: Some fields have errors. See below for details. "
+msgstr "Error: Some fields have errors. See below for details."
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:51 core/models.py:248
+#: core/models.py:252
+msgid "Diaper Change"
+msgstr "Bleskift"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:57
+#: babybuddy/templates/babybuddy/nav-dropdown.html:281 core/models.py:312
+#: core/models.py:316 core/templates/core/timer_detail.html:43
+msgid "Feeding"
+msgstr "Madning"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:63
+#: babybuddy/templates/babybuddy/nav-dropdown.html:157 core/models.py:396
+#: core/models.py:407 core/models.py:411 core/templates/core/note_list.html:29
+msgid "Note"
+msgstr "Note"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:69
+#: babybuddy/templates/babybuddy/nav-dropdown.html:288
+#: babybuddy/templates/babybuddy/welcome.html:42 core/models.py:467
+#: core/models.py:468 core/models.py:471
+#: core/templates/core/sleep_confirm_delete.html:7
+#: core/templates/core/sleep_form.html:13 core/templates/core/sleep_list.html:4
+#: core/templates/core/sleep_list.html:7 core/templates/core/sleep_list.html:12
+#: core/templates/core/timer_detail.html:51
+msgid "Sleep"
+msgstr "Søvn"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:81
+#: babybuddy/templates/babybuddy/nav-dropdown.html:301
+#: babybuddy/templates/babybuddy/welcome.html:50 core/models.py:647
+#: core/models.py:648 core/models.py:651
+#: core/templates/core/timer_detail.html:59
+#: core/templates/core/tummytime_confirm_delete.html:7
+#: core/templates/core/tummytime_form.html:13
+#: core/templates/core/tummytime_list.html:4
+#: core/templates/core/tummytime_list.html:7
+#: core/templates/core/tummytime_list.html:12
+msgid "Tummy Time"
+msgstr "Mavetid"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:87
+#: babybuddy/templates/babybuddy/nav-dropdown.html:193 core/models.py:673
+#: core/models.py:685 core/models.py:686 core/models.py:689
+#: core/templates/core/weight_confirm_delete.html:7
+#: core/templates/core/weight_form.html:13
+#: core/templates/core/weight_list.html:4
+#: core/templates/core/weight_list.html:7
+#: core/templates/core/weight_list.html:12
+#: core/templates/core/weight_list.html:29 reports/graphs/weight_change.py:19
+#: reports/graphs/weight_change.py:30
+#: reports/templates/reports/report_list.html:22
+#: reports/templates/reports/weight_change.html:4
+#: reports/templates/reports/weight_change.html:8
+msgid "Weight"
+msgstr "Vægt"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:129
+#: babybuddy/templates/babybuddy/nav-dropdown.html:137 core/models.py:188
+#: core/templates/core/child_confirm_delete.html:7
+#: core/templates/core/child_detail.html:7
+#: core/templates/core/child_form.html:13 core/templates/core/child_list.html:4
+#: core/templates/core/child_list.html:7 core/templates/core/child_list.html:12
+#: dashboard/templates/dashboard/child.html:7
+#: reports/templates/reports/base.html:7
+msgid "Children"
+msgstr "Børn"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:143 core/models.py:137
+#: core/models.py:187 core/models.py:221 core/models.py:274 core/models.py:335
+#: core/models.py:367 core/models.py:394 core/models.py:426 core/models.py:450
+#: core/models.py:503 core/models.py:537 core/models.py:630 core/models.py:671
+#: core/templates/core/bmi_list.html:27
+#: core/templates/core/diaperchange_list.html:27
+#: core/templates/core/feeding_list.html:27
+#: core/templates/core/head_circumference_list.html:27
+#: core/templates/core/height_list.html:27
+#: core/templates/core/note_list.html:27
+#: core/templates/core/pumping_list.html:27
+#: core/templates/core/sleep_list.html:28
+#: core/templates/core/temperature_list.html:27
+#: core/templates/core/timer_list.html:27
+#: core/templates/core/tummytime_list.html:27
+#: core/templates/core/weight_list.html:27
+msgid "Child"
+msgstr "Barn"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:151 core/models.py:143
+#: core/models.py:240 core/models.py:304 core/models.py:343 core/models.py:373
+#: core/models.py:408 core/models.py:430 core/models.py:458 core/models.py:511
+#: core/models.py:677 core/templates/core/note_confirm_delete.html:7
+#: core/templates/core/note_form.html:13 core/templates/core/note_list.html:4
+#: core/templates/core/note_list.html:7 core/templates/core/note_list.html:12
+msgid "Notes"
+msgstr "Noter"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:199
+msgid "Weight entry"
+msgstr "Vægtindtastning"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:255
+msgid "Activities"
+msgstr "Aktiviteter"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:262
+#: reports/graphs/diaperchange_lifetimes.py:27
+msgid "Changes"
+msgstr "Antal Bleskift"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:268
+msgid "Change"
+msgstr "Bleskift"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:275
+#: babybuddy/templates/babybuddy/welcome.html:34 core/models.py:313
+#: core/templates/core/feeding_confirm_delete.html:7
+#: core/templates/core/feeding_form.html:13
+#: core/templates/core/feeding_list.html:4
+#: core/templates/core/feeding_list.html:7
+#: core/templates/core/feeding_list.html:12
+msgid "Feedings"
+msgstr "Madninger"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:294
+msgid "Sleep entry"
+msgstr "Søvnindtastning"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:307
+msgid "Tummy Time entry"
+msgstr "Mavetid indtastning"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:346
+#: babybuddy/templates/babybuddy/user_list.html:17
+#: babybuddy/templates/babybuddy/user_password_form.html:7
+#: babybuddy/templates/babybuddy/user_settings_form.html:7 core/models.py:556
+#: core/templates/core/timer_list.html:32
+msgid "User"
+msgstr "Bruger"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:348
+msgid "Password"
+msgstr "Adgangskode"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:352
+msgid "Logout"
+msgstr "Log ud"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:355
+msgid "Site"
+msgstr "Side"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:356
+msgid "API Browser"
+msgstr "API Browser"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:358
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:7
+#: babybuddy/templates/babybuddy/user_form.html:13
+#: babybuddy/templates/babybuddy/user_list.html:4
+#: babybuddy/templates/babybuddy/user_list.html:7
+msgid "Users"
+msgstr "Brugere"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:250
+msgid "Backend Admin"
+msgstr "Backend Administrator"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:361
+msgid "Support"
+msgstr "Support"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:363
+msgid "Source Code"
+msgstr "Kildekode"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:365
+msgid "Chat / Support"
+msgstr "Chat / Support"
+
+#: babybuddy/templates/babybuddy/paginator.html:11
+#: core/templates/timeline/_timeline.html:5
+#: core/templates/timeline/_timeline.html:7
+#: core/templates/timeline/_timeline.html:71
+#: core/templates/timeline/_timeline.html:73
+#: dashboard/templates/cards/feeding_day.html:43
+#: dashboard/templates/cards/feeding_last_method.html:34
+#: dashboard/templates/cards/statistics.html:34
+msgid "Previous"
+msgstr "Forrige"
+
+#: babybuddy/templates/babybuddy/paginator.html:28
+#: core/templates/timeline/_timeline.html:12
+#: core/templates/timeline/_timeline.html:14
+#: core/templates/timeline/_timeline.html:78
+#: core/templates/timeline/_timeline.html:80
+#: dashboard/templates/cards/feeding_day.html:47
+#: dashboard/templates/cards/feeding_last_method.html:38
+#: dashboard/templates/cards/statistics.html:38
+msgid "Next"
+msgstr "Næste"
+
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:4
+msgid "Delete User"
+msgstr "Slet Bruger"
+
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:9
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:18
+#: core/templates/core/bmi_confirm_delete.html:8
+#: core/templates/core/bmi_confirm_delete.html:17
+#: core/templates/core/child_confirm_delete.html:9
+#: core/templates/core/child_confirm_delete.html:31
+#: core/templates/core/diaperchange_confirm_delete.html:8
+#: core/templates/core/diaperchange_confirm_delete.html:17
+#: core/templates/core/feeding_confirm_delete.html:8
+#: core/templates/core/feeding_confirm_delete.html:17
+#: core/templates/core/head_circumference_confirm_delete.html:8
+#: core/templates/core/head_circumference_confirm_delete.html:17
+#: core/templates/core/height_confirm_delete.html:8
+#: core/templates/core/height_confirm_delete.html:17
+#: core/templates/core/note_confirm_delete.html:8
+#: core/templates/core/note_confirm_delete.html:17
+#: core/templates/core/pumping_confirm_delete.html:8
+#: core/templates/core/pumping_confirm_delete.html:17
+#: core/templates/core/sleep_confirm_delete.html:8
+#: core/templates/core/sleep_confirm_delete.html:17
+#: core/templates/core/temperature_confirm_delete.html:8
+#: core/templates/core/temperature_confirm_delete.html:17
+#: core/templates/core/timer_confirm_delete.html:11
+#: core/templates/core/timer_confirm_delete.html:20
+#: core/templates/core/timer_confirm_delete_inactive.html:23
+#: core/templates/core/tummytime_confirm_delete.html:8
+#: core/templates/core/tummytime_confirm_delete.html:17
+#: core/templates/core/weight_confirm_delete.html:8
+#: core/templates/core/weight_confirm_delete.html:17
+#: dashboard/templates/dashboard/child_button_group.html:27
+msgid "Delete"
+msgstr "Slet"
+
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:15
+#: core/templates/core/bmi_confirm_delete.html:14
+#: core/templates/core/child_confirm_delete.html:15
+#: core/templates/core/diaperchange_confirm_delete.html:14
+#: core/templates/core/feeding_confirm_delete.html:14
+#: core/templates/core/head_circumference_confirm_delete.html:14
+#: core/templates/core/height_confirm_delete.html:14
+#: core/templates/core/note_confirm_delete.html:14
+#: core/templates/core/pumping_confirm_delete.html:14
+#: core/templates/core/sleep_confirm_delete.html:14
+#: core/templates/core/temperature_confirm_delete.html:14
+#: core/templates/core/timer_confirm_delete.html:17
+#: core/templates/core/tummytime_confirm_delete.html:14
+#: core/templates/core/weight_confirm_delete.html:14
+msgid "Are you sure you want to delete %(object)s?
"
+msgstr "Er du sikker på du vil slette %(object)s?
"
+
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:19
+#: core/templates/core/bmi_confirm_delete.html:18
+#: core/templates/core/child_confirm_delete.html:32
+#: core/templates/core/diaperchange_confirm_delete.html:18
+#: core/templates/core/feeding_confirm_delete.html:18
+#: core/templates/core/head_circumference_confirm_delete.html:18
+#: core/templates/core/height_confirm_delete.html:18
+#: core/templates/core/note_confirm_delete.html:18
+#: core/templates/core/pumping_confirm_delete.html:18
+#: core/templates/core/sleep_confirm_delete.html:18
+#: core/templates/core/temperature_confirm_delete.html:18
+#: core/templates/core/timer_confirm_delete.html:21
+#: core/templates/core/timer_confirm_delete_inactive.html:24
+#: core/templates/core/tummytime_confirm_delete.html:18
+#: core/templates/core/weight_confirm_delete.html:18
+msgid "Cancel"
+msgstr "Annuller"
+
+#: babybuddy/templates/babybuddy/user_form.html:8
+#: babybuddy/templates/babybuddy/user_form.html:18
+#: babybuddy/templates/babybuddy/user_form.html:28
+#: babybuddy/templates/babybuddy/user_list.html:65
+msgid "Create User"
+msgstr "Opret bruger"
+
+#: babybuddy/templates/babybuddy/user_form.html:16
+#: core/templates/core/bmi_form.html:15 core/templates/core/child_form.html:16
+#: core/templates/core/diaperchange_form.html:15
+#: core/templates/core/feeding_form.html:15
+#: core/templates/core/head_circumference_form.html:15
+#: core/templates/core/height_form.html:15
+#: core/templates/core/note_form.html:15
+#: core/templates/core/pumping_form.html:15
+#: core/templates/core/sleep_form.html:15
+#: core/templates/core/temperature_form.html:15
+#: core/templates/core/timer_form.html:10
+#: core/templates/core/tummytime_form.html:15
+#: core/templates/core/weight_form.html:15
+msgid "Update"
+msgstr "Opdater"
+
+#: babybuddy/templates/babybuddy/user_form.html:24
+#: core/templates/core/bmi_form.html:23 core/templates/core/child_form.html:24
+#: core/templates/core/diaperchange_form.html:23
+#: core/templates/core/feeding_form.html:23
+#: core/templates/core/head_circumference_form.html:23
+#: core/templates/core/height_form.html:23
+#: core/templates/core/note_form.html:23
+#: core/templates/core/pumping_form.html:23
+#: core/templates/core/sleep_form.html:23
+#: core/templates/core/temperature_form.html:23
+#: core/templates/core/timer_form.html:18
+#: core/templates/core/tummytime_form.html:23
+#: core/templates/core/weight_form.html:23
+msgid "Update %(object)s
"
+msgstr "\n"
+"Opdater %(object)s
\n"
+""
+
+#: babybuddy/templates/babybuddy/user_list.html:18
+#: core/templates/core/child_list.html:25
+msgid "First Name"
+msgstr "Fornavn"
+
+#: babybuddy/templates/babybuddy/user_list.html:19
+#: core/templates/core/child_list.html:26
+msgid "Last Name"
+msgstr "Efternavn"
+
+#: babybuddy/templates/babybuddy/user_list.html:20
+msgid "Email"
+msgstr "Email"
+
+#: babybuddy/templates/babybuddy/user_list.html:21
+msgid "Staff"
+msgstr "Personale"
+
+#: babybuddy/templates/babybuddy/user_list.html:22 core/models.py:551
+#: core/templates/core/timer_list.html:31
+msgid "Active"
+msgstr "Aktiv"
+
+#: babybuddy/templates/babybuddy/user_list.html:23
+#: core/templates/core/bmi_list.html:24 core/templates/core/bmi_list.html:38
+#: core/templates/core/child_list.html:28
+#: core/templates/core/child_list.html:48
+#: core/templates/core/diaperchange_list.html:24
+#: core/templates/core/diaperchange_list.html:40
+#: core/templates/core/feeding_list.html:24
+#: core/templates/core/feeding_list.html:43
+#: core/templates/core/head_circumference_list.html:24
+#: core/templates/core/head_circumference_list.html:38
+#: core/templates/core/height_list.html:24
+#: core/templates/core/height_list.html:38
+#: core/templates/core/note_list.html:24 core/templates/core/note_list.html:37
+#: core/templates/core/pumping_list.html:24
+#: core/templates/core/pumping_list.html:37
+#: core/templates/core/sleep_list.html:24
+#: core/templates/core/sleep_list.html:40
+#: core/templates/core/temperature_list.html:24
+#: core/templates/core/temperature_list.html:38
+#: core/templates/core/tummytime_list.html:23
+#: core/templates/core/tummytime_list.html:38
+#: core/templates/core/weight_list.html:24
+#: core/templates/core/weight_list.html:38
+msgid "Actions"
+msgstr "Handlinger"
+
+#: babybuddy/templates/babybuddy/user_list.html:55
+msgid "No users found."
+msgstr "Ingen brugere fundet"
+
+#: babybuddy/templates/babybuddy/user_password_form.html:4
+#: babybuddy/templates/babybuddy/user_password_form.html:8
+#: babybuddy/templates/babybuddy/user_password_form.html:12
+msgid "Change Password"
+msgstr "Skift Adgangskode"
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:4
+#: babybuddy/templates/babybuddy/user_settings_form.html:12
+msgid "User Settings"
+msgstr "Bruger indstillinger"
+
+#: babybuddy/templates/babybuddy/messages.html:23
+#: babybuddy/templates/babybuddy/user_settings_form.html:26
+msgid "Error: Some fields have errors. See below for details."
+msgstr "Fejl: Nogle felter indeholder fejl. Se nedenstående for detaljer"
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:33
+msgid "User Profile"
+msgstr "Brugerprofil"
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:79
+msgid "API"
+msgstr "API"
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:81
+msgid "Key"
+msgstr "Nøgle"
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:84
+msgid "Regenerate"
+msgstr "Regenerer"
+
+#: babybuddy/templates/babybuddy/welcome.html:4
+#: babybuddy/templates/babybuddy/welcome.html:7
+msgid "Welcome!"
+msgstr "Velkommen!"
+
+#: babybuddy/templates/babybuddy/welcome.html:12
+msgid "Welcome to Baby Buddy!"
+msgstr "Velkommen til Baby Buddy!"
+
+#: babybuddy/templates/babybuddy/welcome.html:14
+msgid "Learn about and predict baby's needs without\n"
+" (as much) guess work by using Baby Buddy to track —"
+msgstr "Lær om og forudsig babyers behov uden \n"
+"(lige så meget) gætværk, ved at bruge Baby Buddy til at holde styr på —"
+
+#: babybuddy/templates/babybuddy/welcome.html:26 core/models.py:249
+#: core/templates/core/diaperchange_confirm_delete.html:7
+#: core/templates/core/diaperchange_form.html:13
+#: core/templates/core/diaperchange_list.html:4
+#: core/templates/core/diaperchange_list.html:7
+#: core/templates/core/diaperchange_list.html:12
+#: dashboard/templates/cards/diaperchange_types.html:6
+msgid "Diaper Changes"
+msgstr "Antal Bleskift"
+
+#: babybuddy/templates/babybuddy/welcome.html:54
+msgid "As the amount of entries grows, Baby Buddy will help\n"
+" parents and caregivers to identify small patterns in baby's habits\n"
+" using the dashboard and graphs. Baby Buddy is mobile-friendly and\n"
+" uses a dark theme to help weary moms and dads with 2AM feedings and\n"
+" changings. To get started, just click the button below to add your\n"
+" first (or second, third, etc.) child!"
+msgstr "Efterhånden som antallet af registreringer vokser, hjælper Baby Buddy\n"
+" forældre og omsorgspersoner til at identificere små mønstre i babys vaner\n"
+" ved hjælp af dashboardet og grafer. Baby Buddy er mobilvenlig og\n"
+" bruger et mørkt tema til at hjælpe trætte mødre og fædre med amning og bleskift kl. 2\n"
+" om natten. For at komme i gang skal du blot klikke på knappen nedenfor for at tilføje din\n"
+" første (eller andet, tredje osv.) barn!"
+
+#: babybuddy/templates/babybuddy/welcome.html:68
+#: core/templates/core/child_form.html:8 core/templates/core/child_form.html:18
+#: core/templates/core/child_form.html:28
+msgid "Add a Child"
+msgstr "Tilføj et barn"
+
+#: babybuddy/templates/registration/login.html:32
+msgid "Login"
+msgstr "Login"
+
+#: babybuddy/templates/registration/login.html:38
+msgid "Forgot your password?"
+msgstr "Glemt adgangskode?"
+
+#: babybuddy/templates/registration/password_reset_complete.html:4
+msgid "Password Reset Successfully!"
+msgstr "Nulstilling af adgangskode gennemført!"
+
+#: babybuddy/templates/registration/password_reset_complete.html:8
+msgid "Your password has been set. You may go ahead and log in now."
+msgstr "Din adgangskode er blevet indstillet. Du kan nu fortsætte med at logge ind."
+
+#: babybuddy/templates/registration/password_reset_complete.html:9
+msgid "Log in"
+msgstr "Log ind"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:4
+msgid "Password Reset"
+msgstr "Adgangskode nulstillet"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:12
+msgid "Oh snap! The\n"
+" two passwords did not match. Please try again.
"
+msgstr "For pokker! De to indtastede adgangskoder matcher ikke. Prøv venligst igen.
"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:22
+msgid "Enter your new password in each field below."
+msgstr "Indtast din nye adgangskode i hvert felt nedenfor"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:46
+#: babybuddy/templates/registration/password_reset_form.html:31
+msgid "Reset Password"
+msgstr "Nulstil adgangskode"
+
+#: babybuddy/templates/registration/password_reset_done.html:4
+msgid "Reset Email Sent"
+msgstr "Nulstillings email sendt"
+
+#: babybuddy/templates/registration/password_reset_done.html:8
+msgid "We've emailed you instructions for setting your\n"
+" password, if an account exists with the email you entered. You\n"
+" should receive them shortly.
\n"
+" If you don't receive an email, please make sure you've\n"
+" entered the address you registered with, and check your spam\n"
+" folder.
"
+msgstr "Vi har sendt dig en e-mail med instruktioner til indstilling af din\n"
+" adgangskode, hvis der findes en konto med den e-mail, du har indtastet. Du\n"
+" skulle modtage dem inden længe.
\n"
+" Hvis du ikke modtager en e-mail, skal du sørge for, at du har\n"
+" indtastet den adresse, du har registreret dig med, og tjekke din spam\n"
+" mappe.
"
+
+#: babybuddy/templates/registration/password_reset_form.html:4
+msgid "Forgot Password"
+msgstr "Glemt adgangskode"
+
+#: babybuddy/templates/registration/password_reset_form.html:8
+msgid "Enter your account email address in the\n"
+" form below. If the address is valid, you will receive instructions for\n"
+" resetting your password.
"
+msgstr "Indtast din adresse i formularen herunder. Hvis adressen \n"
+"er gyldig vil du modtage instruktioner via email, i hvordan du kan\n"
+" nulstille dit password.
"
+
+#: babybuddy/views.py:102
+msgid "User %(username)s added!"
+msgstr "Bruger %(username)s tilføjet!"
+
+#: babybuddy/views.py:113
+msgid "User %(username)s updated."
+msgstr "Bruger %(username)s opdateret."
+
+#: babybuddy/views.py:125
+msgid "User {user} deleted."
+msgstr "Bruger {user} slettet."
+
+#: babybuddy/views.py:146
+msgid "Password updated."
+msgstr "Adgangskode opdateret."
+
+#: babybuddy/views.py:175
+msgid "User API key regenerated."
+msgstr "Bruger API nøgle regenereret."
+
+#: babybuddy/views.py:188
+msgid "Settings saved!"
+msgstr "Instillinger gemt!"
+
+#: core/forms.py:120
+msgid "Name does not match child name."
+msgstr "Navnet stemmer ikke med barnets navn."
+
+#: core/models.py:28
+msgid "Date can not be in the future."
+msgstr "Datoen kan ikke ligge i fremtiden."
+
+#: core/models.py:42
+msgid "Start time must come before end time."
+msgstr "Startdato skal komme før slutdato."
+
+#: core/models.py:45
+msgid "Duration too long."
+msgstr "Længden er for lang."
+
+#: core/models.py:61
+msgid "Another entry intersects the specified time period."
+msgstr "En anden registrering skærer den angivne tidsperiode."
+
+#: core/models.py:75
+msgid "Date/time can not be in the future."
+msgstr "Dato/tid kan ikke ligge i fremtiden"
+
+#: core/models.py:163
+msgid "First name"
+msgstr "Fornavn"
+
+#: core/models.py:165
+msgid "Last name"
+msgstr "Efternavn"
+
+#: core/models.py:167
+msgid "Birth date"
+msgstr "Fødselsnavn"
+
+#: core/models.py:174
+msgid "Slug"
+msgstr "Slug"
+
+#: core/models.py:177
+msgid "Picture"
+msgstr "Billede"
+
+#: core/models.py:224 core/models.py:398 core/models.py:429 core/models.py:509
+#: core/templates/core/diaperchange_list.html:25
+#: core/templates/core/note_list.html:25
+#: core/templates/core/pumping_list.html:25
+#: core/templates/core/temperature_list.html:25
+msgid "Time"
+msgstr "Tid"
+
+#: core/models.py:226 core/templates/core/diaperchange_list.html:61
+#: reports/graphs/diaperchange_types.py:36
+msgid "Wet"
+msgstr "Våd"
+
+#: core/models.py:227 core/templates/core/diaperchange_list.html:62
+#: reports/graphs/diaperchange_types.py:30
+msgid "Solid"
+msgstr "Solid"
+
+#: core/models.py:231
+msgid "Black"
+msgstr "Sort"
+
+#: core/models.py:232
+msgid "Brown"
+msgstr "Brun"
+
+#: core/models.py:233
+msgid "Green"
+msgstr "Grøn"
+
+#: core/models.py:234
+msgid "Yellow"
+msgstr "Gul"
+
+#: core/models.py:84 core/models.py:237
+#: core/templates/core/diaperchange_list.html:30
+msgid "Color"
+msgstr "Farve"
+
+#: core/models.py:180
+msgid "Wet and/or solid is required."
+msgstr "Våd og/eller solid er påkrævet."
+
+#: core/models.py:276 core/models.py:453 core/models.py:543 core/models.py:632
+msgid "Start time"
+msgstr "Starttidspunkt"
+
+#: core/models.py:277 core/models.py:454 core/models.py:546 core/models.py:633
+msgid "End time"
+msgstr "Sluttidspunkt"
+
+#: core/models.py:279 core/models.py:456 core/models.py:549 core/models.py:635
+#: core/templates/core/feeding_list.html:34
+#: core/templates/core/sleep_list.html:30
+#: core/templates/core/timer_list.html:29
+#: core/templates/core/tummytime_list.html:29
+msgid "Duration"
+msgstr "Længde"
+
+#: core/models.py:283
+msgid "Breast milk"
+msgstr "Brystmælk"
+
+#: core/models.py:284
+msgid "Formula"
+msgstr "Mælkserstatning"
+
+#: core/models.py:289 core/templates/core/feeding_list.html:30
+msgid "Type"
+msgstr "Type"
+
+#: core/models.py:293
+msgid "Bottle"
+msgstr "Flaske"
+
+#: core/models.py:294
+msgid "Left breast"
+msgstr "Venstre bryst"
+
+#: core/models.py:295
+msgid "Right breast"
+msgstr "Højre bryst"
+
+#: core/models.py:301 core/templates/core/feeding_list.html:29
+msgid "Method"
+msgstr "Metode"
+
+#: core/models.py:239 core/models.py:303 core/models.py:428
+#: core/templates/core/diaperchange_list.html:31
+#: core/templates/core/pumping_list.html:29
+msgid "Amount"
+msgstr "Mængde"
+
+#: core/models.py:243
+msgid "Only \"Bottle\" method is allowed with \"Formula\" type."
+msgstr "Kun \"Flaske\" metoden er tilladt med \"Mælkserstatning\" typen."
+
+#: core/models.py:540 core/templates/core/timer_list.html:25
+msgid "Name"
+msgstr "Navn"
+
+#: core/models.py:564 core/templates/core/timer_form.html:4
+msgid "Timer"
+msgstr "Timer"
+
+#: core/models.py:565 core/templates/core/timer_confirm_delete.html:9
+#: core/templates/core/timer_confirm_delete_inactive.html:9
+#: core/templates/core/timer_detail.html:8
+#: core/templates/core/timer_form.html:7 core/templates/core/timer_list.html:4
+#: core/templates/core/timer_list.html:7 core/templates/core/timer_list.html:12
+#: core/templates/core/timer_nav.html:10
+msgid "Timers"
+msgstr "Timers"
+
+#: core/models.py:568
+msgid "Timer #{id}"
+msgstr "Timer #{id}"
+
+#: core/models.py:638 core/templates/core/tummytime_list.html:30
+msgid "Milestone"
+msgstr "Milepæl"
+
+#: core/models.py:141 core/models.py:341 core/models.py:371 core/models.py:675
+#: core/templates/core/bmi_list.html:25
+#: core/templates/core/feeding_list.html:25
+#: core/templates/core/head_circumference_list.html:25
+#: core/templates/core/height_list.html:25
+#: core/templates/core/weight_list.html:25 reports/graphs/bmi_change.py:28
+#: reports/graphs/diaperchange_amounts.py:37
+#: reports/graphs/diaperchange_types.py:49 reports/graphs/feeding_amounts.py:70
+#: reports/graphs/feeding_duration.py:56
+#: reports/graphs/head_circumference_change.py:28
+#: reports/graphs/height_change.py:28 reports/graphs/pumping_amounts.py:58
+#: reports/graphs/sleep_pattern.py:151 reports/graphs/sleep_totals.py:59
+#: reports/graphs/tummytime_duration.py:51 reports/graphs/weight_change.py:28
+msgid "Date"
+msgstr "Dato"
+
+#: core/templates/core/child_confirm_delete.html:4
+msgid "Delete a Child"
+msgstr "Slet et barn"
+
+#: core/templates/core/child_confirm_delete.html:20
+msgid "To confirm this action. Type the full name of the child below."
+msgstr "For at fuldende denne handling. Tast det fulde navn på barnet forneden."
+
+#: core/templates/core/child_detail.html:23
+#: dashboard/templates/dashboard/dashboard.html:32
+msgid "Born"
+msgstr "Født"
+
+#: core/templates/core/child_detail.html:24
+#: dashboard/templates/dashboard/dashboard.html:33
+msgid "Age"
+msgstr "Alder"
+
+#: core/templates/timeline/_timeline.html:38
+msgid "%(since)s ago (%(time)s)"
+msgstr "%(since)er siden (%(time)s)"
+
+#: core/templates/core/child_list.html:27
+msgid "Birth Date"
+msgstr "Fødselsdag"
+
+#: core/templates/core/child_list.html:67
+msgid "No children found."
+msgstr "Ingen børn fundet"
+
+#: core/templates/core/diaperchange_confirm_delete.html:4
+msgid "Delete a Diaper Change"
+msgstr "Slet et bleskift"
+
+#: core/templates/core/diaperchange_form.html:6
+msgid "Update a Diaper Change"
+msgstr "Opdater et bleskift"
+
+#: core/templates/core/diaperchange_form.html:8
+#: core/templates/core/diaperchange_form.html:27
+msgid "Add a Diaper Change"
+msgstr "Tilføj et bleskift"
+
+#: core/templates/core/diaperchange_form.html:17
+#: core/templates/core/feeding_form.html:17
+#: core/templates/core/note_form.html:17 core/templates/core/sleep_form.html:17
+#: core/templates/core/tummytime_form.html:17
+#: core/templates/core/widget_tag_editor.html:24
+msgid "Add"
+msgstr "Tilføj"
+
+#: core/templates/core/diaperchange_list.html:77
+msgid "No diaper changes found."
+msgstr "Ingen bleskift fundet."
+
+#: core/templates/core/diaperchange_list.html:63
+msgid "Add a Change"
+msgstr "Tilføj et bleskift"
+
+#: core/templates/core/feeding_confirm_delete.html:4
+msgid "Delete a Feeding"
+msgstr "Slet en Madning"
+
+#: core/templates/core/feeding_form.html:6
+msgid "Update a Feeding"
+msgstr "Opdater en madning"
+
+#: core/templates/core/feeding_form.html:8
+#: core/templates/core/feeding_form.html:27
+msgid "Add a Feeding"
+msgstr "Tilføj en madning"
+
+#: core/templates/core/feeding_list.html:33
+msgid "Amt."
+msgstr "Mgd."
+
+#: core/templates/core/feeding_list.html:82
+msgid "No feedings found."
+msgstr "Ingen madninger fundet"
+
+#: core/templates/core/note_confirm_delete.html:4
+msgid "Delete a Note"
+msgstr "Slet en Note."
+
+#: core/templates/core/note_form.html:6
+msgid "Update a Note"
+msgstr "Opdater en Note"
+
+#: core/templates/core/note_form.html:8 core/templates/core/note_form.html:27
+msgid "Add a Note"
+msgstr "Tilføj en Note"
+
+#: core/templates/core/note_list.html:64
+msgid "No notes found."
+msgstr "Ingen noter fundet."
+
+#: core/templates/core/sleep_confirm_delete.html:4
+msgid "Delete a Sleep Entry"
+msgstr "Slet en søvnindtastning"
+
+#: core/templates/core/sleep_form.html:6
+msgid "Update a Sleep Entry"
+msgstr "Opdater en søvnindtastning"
+
+#: core/templates/core/sleep_form.html:8 core/templates/core/sleep_form.html:27
+msgid "Add a Sleep Entry"
+msgstr "Tilføj en "
+
+#: core/templates/core/sleep_list.html:25
+#: core/templates/core/timer_form.html:12
+#: core/templates/core/timer_list.html:24
+#: core/templates/core/tummytime_list.html:24
+msgid "Start"
+msgstr "Start"
+
+#: core/templates/core/sleep_list.html:26
+#: core/templates/core/timer_list.html:30
+#: core/templates/core/tummytime_list.html:25
+msgid "End"
+msgstr "Slut"
+
+#: core/templates/core/sleep_list.html:31
+msgid "Nap"
+msgstr "Lur"
+
+#: core/templates/core/sleep_list.html:74
+msgid "No sleep entries found."
+msgstr "Wwit"
+
+#: core/templates/core/timer_confirm_delete.html:5
+msgid "Delete %(object)s"
+msgstr "Slet %(object)er"
+
+#: core/templates/core/timer_detail.html:28
+msgid "Started"
+msgstr "Startet"
+
+#: core/templates/core/timer_detail.html:30
+msgid "Stopped"
+msgstr "Stopped"
+
+#: core/templates/core/timer_detail.html:26
+msgid "%(timer)s created by %(object.user)s"
+msgstr "%(timer)s oprettet af %(object.user)s"
+
+#: core/templates/core/timer_detail.html:63
+msgid "Timer actions"
+msgstr "Timer handlinger"
+
+#: core/templates/core/timer_form.html:22
+#: core/templates/core/timer_list.html:15 core/templates/core/timer_nav.html:23
+msgid "Start Timer"
+msgstr "Start Timer"
+
+#: core/templates/core/timer_list.html:58
+msgid "No timer entries found."
+msgstr "Ingen timer registreringer fundet"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:32
+#: core/templates/core/timer_nav.html:18
+msgid "Quick Start Timer"
+msgstr "Kvikstart Timer"
+
+#: core/templates/core/timer_nav.html:28
+msgid "View Timers"
+msgstr "Vis Timere"
+
+#: core/templates/core/timer_nav.html:32
+#: dashboard/templates/cards/timer_list.html:6
+msgid "Active Timers"
+msgstr "Aktive Timere"
+
+#: core/templates/core/timer_nav.html:38
+#: dashboard/templates/cards/diaperchange_last.html:17
+#: dashboard/templates/cards/diaperchange_types.html:12
+#: dashboard/templates/cards/feeding_day.html:20
+#: dashboard/templates/cards/feeding_day.html:52
+#: dashboard/templates/cards/feeding_last.html:17
+#: dashboard/templates/cards/feeding_last_method.html:43
+#: dashboard/templates/cards/sleep_day.html:14
+#: dashboard/templates/cards/sleep_last.html:17
+#: dashboard/templates/cards/sleep_naps_day.html:18
+#: dashboard/templates/cards/tummytime_day.html:14
+msgid "None"
+msgstr "Ingen"
+
+#: core/templates/core/tummytime_confirm_delete.html:4
+msgid "Delete a Tummy Time Entry"
+msgstr "Slet en Mavetid registrering"
+
+#: core/templates/core/tummytime_form.html:6
+msgid "Update a Tummy Time Entry"
+msgstr "Opdater en Mavetid registrering"
+
+#: core/templates/core/tummytime_form.html:8
+#: core/templates/core/tummytime_form.html:27
+msgid "Add a Tummy Time Entry"
+msgstr "Tilføj en Mavetid registrering"
+
+#: core/templates/core/tummytime_list.html:67
+msgid "No tummy time entries found."
+msgstr "Ingen Mavetids-registreringer fundet"
+
+#: core/templates/core/weight_confirm_delete.html:4
+msgid "Delete a Weight Entry"
+msgstr "Slet en Vægtindtastning"
+
+#: core/templates/core/weight_form.html:8
+#: core/templates/core/weight_form.html:17
+#: core/templates/core/weight_form.html:27
+msgid "Add a Weight Entry"
+msgstr "Tilføj en Vægtindtastning"
+
+#: core/templates/core/weight_list.html:70
+msgid "No weight entries found."
+msgstr "Ingen vægtindtastning fundet."
+
+#: core/timeline.py:164
+msgid "%(child)s had a diaper change."
+msgstr "%(child)s fik skiftet bleen."
+
+#: core/timeline.py:145
+msgid "%(child)s started feeding."
+msgstr "%(child)s begyndte madning."
+
+#: core/timeline.py:158
+msgid "%(child)s finished feeding."
+msgstr "%(child)s afsluttede madning."
+
+#: core/timeline.py:91
+msgid "%(child)s fell asleep."
+msgstr "%(child)s faldt i søvn."
+
+#: core/timeline.py:103
+msgid "%(child)s woke up."
+msgstr "%(child)s vågnede."
+
+#: core/timeline.py:53
+msgid "%(child)s started tummy time!"
+msgstr "%(child)s begyndte mavetid."
+
+#: core/timeline.py:65
+msgid "%(child)s finished tummy time."
+msgstr "%(child)s afsluttede mavetid."
+
+#: core/views.py:33
+msgid "%(model)s entry for %(child)s added!"
+msgstr "%(model)s indtastning for %(child)s tilføjet!"
+
+#: core/views.py:35 core/views.py:308
+msgid "%(model)s entry added!"
+msgstr "%(model)s indtastning tilføjet!"
+
+#: core/views.py:61 core/views.py:316
+msgid "%(model)s entry for %(child)s updated."
+msgstr "%(model)s indtastning for %(child)s opdateret."
+
+#: core/views.py:63
+msgid "%(model)s entry updated."
+msgstr "%(model)s indtastning opdateret"
+
+#: core/views.py:115
+msgid "%(first_name)s %(last_name)s added!"
+msgstr "%(first_name)s %(last_name)s tilføjet!"
+
+#: core/views.py:478
+msgid "%(timer)s stopped."
+msgstr "%(timer)s stoppet"
+
+#: dashboard/templates/cards/diaperchange_last.html:6
+msgid "Last Diaper Change"
+msgstr "Seneste bleskift"
+
+#: dashboard/templates/cards/diaperchange_last.html:8
+#: dashboard/templates/cards/feeding_last.html:8
+#: dashboard/templates/cards/sleep_last.html:8
+#: dashboard/templates/cards/tummytime_last.html:8
+msgid "%(time)s ago"
+msgstr "%(time)s siden"
+
+#: dashboard/templates/cards/tummytime_last.html:18
+msgid "Never"
+msgstr "Aldrig"
+
+#: dashboard/templates/cards/diaperchange_types.html:14
+msgid "Past Week"
+msgstr "Forrige uge"
+
+#: dashboard/templates/cards/diaperchange_types.html:27
+msgid "wet"
+msgstr "Våd"
+
+#: dashboard/templates/cards/diaperchange_types.html:35
+msgid "solid"
+msgstr "fast"
+
+#: dashboard/templates/cards/diaperchange_types.html:49
+msgid "today"
+msgstr "I dag"
+
+#: dashboard/templates/cards/diaperchange_types.html:51
+msgid "yesterday"
+msgstr "I går"
+
+#: dashboard/templates/cards/diaperchange_types.html:53
+msgid "%(key)s days ago"
+msgstr "%(key)s dage siden"
+
+#: dashboard/templates/cards/feeding_last.html:6
+msgid "Last Feeding"
+msgstr "Seneste madning"
+
+#: dashboard/templates/cards/feeding_last_method.html:6
+msgid "Last Feeding Method"
+msgstr "Seneste madningsmetode"
+
+#: dashboard/templates/cards/sleep_day.html:6
+msgid "Today's Sleep"
+msgstr "Søvn i dag"
+
+#: dashboard/templates/cards/sleep_day.html:11
+#: dashboard/templates/cards/sleep_naps_day.html:13
+#: dashboard/templates/cards/tummytime_day.html:11
+msgid "None yet today"
+msgstr "Endnu intet i dag"
+
+#: dashboard/templates/cards/sleep_day.html:20
+msgid "%(count)s sleep entries"
+msgstr "%(count)s søvn indtastninger"
+
+#: dashboard/templates/cards/sleep_last.html:4
+msgid "Last Slept"
+msgstr "Senest sovet"
+
+#: dashboard/templates/cards/sleep_naps_day.html:6
+msgid "Today's Naps"
+msgstr "Lure i dag"
+
+#: dashboard/templates/cards/sleep_naps_day.html:12
+msgid "%(count)s nap%(plural)s"
+msgstr "%(count)s lur%(plural)s"
+
+#: dashboard/templates/cards/statistics.html:7
+msgid "Statistics"
+msgstr "Statistik"
+
+#: dashboard/templates/cards/statistics.html:25
+msgid "Not enough data"
+msgstr "Ikke nok data"
+
+#: dashboard/templates/cards/timer_list.html:12
+msgid "%(count)s active timer%(plural)s"
+msgstr "%(count)s aktiv timer%(plural)s"
+
+#: dashboard/templates/cards/timer_list.html:19
+msgid "Started by %(instance.user)s at %(start)s"
+msgstr "Startet af %(instance.user)s at %(start)s"
+
+#: dashboard/templates/cards/tummytime_day.html:6
+msgid "Today's Tummy Time"
+msgstr "Mavetid i dag"
+
+#: dashboard/templates/cards/tummytime_day.html:22
+msgid "%(duration)s at %(end)s"
+msgstr "%(duration)s at %(end)s"
+
+#: dashboard/templates/cards/tummytime_last.html:6
+msgid "Last Tummy Time"
+msgstr "Seneste mavetid"
+
+#: dashboard/templates/dashboard/child_button_group.html:3
+msgid "Child actions"
+msgstr "Handlinger for Barn"
+
+#: reports/templates/reports/diaperchange_types.html:4
+#: reports/templates/reports/diaperchange_types.html:8
+#: reports/templates/reports/report_list.html:12
+msgid "Diaper Change Types"
+msgstr "Bleskifte typer"
+
+#: reports/templates/reports/diaperchange_lifetimes.html:4
+#: reports/templates/reports/diaperchange_lifetimes.html:8
+#: reports/templates/reports/report_list.html:13
+msgid "Diaper Lifetimes"
+msgstr "Blev Levetider"
+
+#: reports/templates/reports/report_list.html:15
+msgid "Feeding Durations (Average)"
+msgstr "Madningslængder (gennemsnit)"
+
+#: reports/templates/reports/report_list.html:19
+#: reports/templates/reports/sleep_pattern.html:4
+#: reports/templates/reports/sleep_pattern.html:8
+msgid "Sleep Pattern"
+msgstr "Søvnmønster"
+
+#: reports/templates/reports/report_list.html:20
+#: reports/templates/reports/sleep_totals.html:4
+#: reports/templates/reports/sleep_totals.html:8
+msgid "Sleep Totals"
+msgstr "Søvn totaler"
+
+#: dashboard/templatetags/cards.py:420
+msgid "Diaper change frequency"
+msgstr "Bleskift frekvens"
+
+#: dashboard/templatetags/cards.py:466
+msgid "Feeding frequency"
+msgstr "Madnings frekvens"
+
+#: dashboard/templatetags/cards.py:328
+msgid "Average nap duration"
+msgstr "Gennemsnitlig lurlængde"
+
+#: dashboard/templatetags/cards.py:335
+msgid "Average naps per day"
+msgstr "Gennemsnitlige antal lure per dag"
+
+#: dashboard/templatetags/cards.py:345
+msgid "Average sleep duration"
+msgstr "Gennemsnitlig søvnlængde"
+
+#: dashboard/templatetags/cards.py:352
+msgid "Average awake duration"
+msgstr "Gennemsnitlig tid vågen"
+
+#: dashboard/templatetags/cards.py:362
+msgid "Weight change per week"
+msgstr "Vægtændring pr. uge"
+
+#: reports/graphs/diaperchange_lifetimes.py:35
+msgid "Diaper Lifetimes"
+msgstr "Ble Levetider"
+
+#: reports/graphs/diaperchange_lifetimes.py:36
+msgid "Time between changes (hours)"
+msgstr "Tid mellem bleskift (timer)"
+
+#: reports/graphs/diaperchange_types.py:41 reports/graphs/feeding_amounts.py:58
+msgid "Total"
+msgstr "Total"
+
+#: reports/graphs/diaperchange_types.py:48
+msgid "Diaper Change Types"
+msgstr "Bleskift Typer"
+
+#: reports/graphs/diaperchange_types.py:51
+msgid "Number of changes"
+msgstr "Antal bleskift"
+
+#: reports/graphs/feeding_duration.py:38
+msgid "Average duration"
+msgstr "Gennemsnitlig længde"
+
+#: reports/graphs/feeding_duration.py:46
+msgid "Total feedings"
+msgstr "Totalt antal amninger"
+
+#: reports/graphs/feeding_duration.py:55
+msgid "Average Feeding Durations"
+msgstr "Gennemsnitlig Madningslængder"
+
+#: reports/graphs/feeding_duration.py:58
+msgid "Average duration (minutes)"
+msgstr "Gennemsnitslængde (minutter)"
+
+#: reports/graphs/feeding_duration.py:60
+msgid "Number of feedings"
+msgstr "Antal amninger"
+
+#: reports/graphs/sleep_pattern.py:148
+msgid "Sleep Pattern"
+msgstr "Søvnmønster"
+
+#: reports/graphs/sleep_pattern.py:165
+msgid "Time of day"
+msgstr "Tidspunkt"
+
+#: reports/graphs/sleep_totals.py:48
+msgid "Total sleep"
+msgstr "Total søvn"
+
+#: reports/graphs/sleep_totals.py:58
+msgid "Sleep Totals"
+msgstr "Totalt antal søvn"
+
+#: reports/graphs/sleep_totals.py:61
+msgid "Hours of sleep"
+msgstr "Timers søvn"
+
+#: reports/graphs/weight_change.py:27
+msgid "Weight"
+msgstr "Vægt"
+
+#: reports/templates/reports/feeding_duration.html:4
+#: reports/templates/reports/feeding_duration.html:8
+msgid "Average Feeding Durations"
+msgstr "Gennemsnitlig madningslængde"
+
+#: dashboard/templates/dashboard/child_button_group.html:12
+#: reports/templates/reports/base.html:9
+#: reports/templates/reports/report_list.html:4
+msgid "Reports"
+msgstr "Rapporter"
+
+#: reports/templates/reports/report_base.html:19
+msgid "There is no enough data to generate this report."
+msgstr "Der er ikke nok data til at generere denne rapport."
+
+#: core/models.py:296
+msgid "Both breasts"
+msgstr "Begge bryster"
+
+#: babybuddy/settings/base.py:173
+msgid "German"
+msgstr "Tysk"
+
+#: babybuddy/settings/base.py:177
+msgid "Spanish"
+msgstr "Spansk"
+
+#: babybuddy/settings/base.py:178
+msgid "Swedish"
+msgstr "Svensk"
+
+#: babybuddy/settings/base.py:179
+msgid "Turkish"
+msgstr "Tyrkisk"
+
+#: babybuddy/templates/error/403.html:9
+msgid "You do not have permission to access this resource. Contact a site administrator for assistance."
+msgstr "Du har ikke tilladelse til at tilgå denne ressource. Kontakt en administrator for assistance."
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:75
+#: babybuddy/templates/babybuddy/nav-dropdown.html:179 core/models.py:506
+#: core/models.py:519 core/models.py:520 core/models.py:523
+#: core/templates/core/temperature_confirm_delete.html:7
+#: core/templates/core/temperature_form.html:13
+#: core/templates/core/temperature_list.html:4
+#: core/templates/core/temperature_list.html:7
+#: core/templates/core/temperature_list.html:12
+#: core/templates/core/temperature_list.html:29
+msgid "Temperature"
+msgstr "Temperatur"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:185
+msgid "Temperature reading"
+msgstr "Temperaturmåling"
+
+#: babybuddy/templates/babybuddy/welcome.html:14
+msgid "Learn about and predict baby's needs without (as much) guess work by using Baby Buddy to track —"
+msgstr "Lær mere om og forudse din babys behov uden (så meget) gætværk ved at bruge Baby Buddy til at holde øje med —"
+
+#: babybuddy/templates/babybuddy/welcome.html:56
+msgid "As the amount of entries grows, Baby Buddy will help parents and caregivers to identify small patterns in baby's habits using the dashboard and graphs. Baby Buddy is mobile-friendly and uses a dark theme to help weary moms and dads with 2AM feedings and changings. To get started, just click the button below to add your first (or second, third, etc.) child!"
+msgstr "Efterhånden som antallet af registreringer vokser, hjælper Baby Buddy forældre og omsorgspersoner med at identificere små mønstre i babys vaner ved hjælp af dashboardet og grafer. Baby Buddy er mobilvenlig og bruger et mørkt tema til at hjælpe trætte mødre og fædre med admning og bleskift kl. 2 om natten. For at komme i gang skal du blot klikke på knappen nedenfor for at tilføje din første (eller andet, tredje osv.) barn!"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:13
+msgid "Oh snap! The two passwords did not match. Please try again."
+msgstr "Sørens! De to adgangskoder er ikke ens. Prøv venligst igen."
+
+#: babybuddy/templates/registration/password_reset_done.html:9
+msgid "We've emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly."
+msgstr "Vi har emailet dig instrukser om hvordan du indstiller din adgangskode, hvis der er tilknyttet en konto til den indtastede email. Du burde modtage dem snarest."
+
+#: babybuddy/templates/registration/password_reset_done.html:15
+msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder."
+msgstr "Hvis du ikke modtager en email bedes du venligst kontrollere at du har indtastet den rigtige adresse og kigge i din spam-mappe."
+
+#: babybuddy/templates/registration/password_reset_form.html:9
+msgid "Enter your account email address in the form below. If the address is valid, you will receive instructions for resetting your password."
+msgstr "Indtast din brugers email adresse i feltet nedenunder. Hvis adressen er gyldig vil du modtage instruktioner til at nulstille din adgangskode."
+
+#: core/models.py:285
+msgid "Fortified breast milk"
+msgstr "Beriget modermælk"
+
+#: core/templates/core/temperature_confirm_delete.html:4
+msgid "Delete a Temperature Reading"
+msgstr "Slet en Temperaturmåling"
+
+#: core/templates/core/temperature_form.html:8
+#: core/templates/core/temperature_form.html:17
+msgid "Add a Temperature Reading"
+msgstr "Tilføj en Temperaturmåling"
+
+#: core/templates/core/temperature_form.html:27
+msgid "Add a Temperature Entry"
+msgstr "Tilføj en Temperaturregistrering"
+
+#: core/templates/core/temperature_list.html:70
+msgid "No temperature entries found."
+msgstr "Ingen temperaturmålinger registreret."
+
+#: core/templates/core/timer_detail.html:34
+msgid "%(timer)s created by %(user)s"
+msgstr ""
+
+#: core/utils.py:40
+msgid "%(hours)s hour"
+msgid_plural "%(hours)s hours"
+msgstr[0] ""
+msgstr[1] ""
+
+#: core/utils.py:44
+msgid "%(minutes)s minute"
+msgid_plural "%(minutes)s minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: core/utils.py:50
+msgid "%(seconds)s second"
+msgid_plural "%(seconds)s seconds"
+msgstr[0] ""
+msgstr[1] ""
+
+#: core/views.py:69 core/views.py:146
+msgid "%(model)s entry deleted."
+msgstr ""
+
+#: core/views.py:366
+msgid "%(model)s reading added!"
+msgstr ""
+
+#: core/views.py:374
+msgid "%(model)s reading for %(child)s updated."
+msgstr ""
+
+#: dashboard/templates/cards/timer_list.html:27
+msgid "Started by %(user)s at %(start)s"
+msgstr ""
+
+#: reports/templates/reports/feeding_amounts.html:4
+#: reports/templates/reports/feeding_amounts.html:8
+#: reports/templates/reports/report_list.html:14
+msgid "Feeding Amounts"
+msgstr "Fodringsmængder"
+
+#: reports/graphs/feeding_amounts.py:27
+msgid "Total feeding amount"
+msgstr "Total fodringsmængde"
+
+#: reports/graphs/feeding_amounts.py:36
+msgid "Total Feeding Amounts"
+msgstr "Total Fodringsmængde"
+
+#: reports/graphs/feeding_amounts.py:72
+msgid "Feeding amount"
+msgstr "Madnings mængde"
+
+#: reports/templates/reports/report_base.html:17
+msgid "There is not enough data to generate this report."
+msgstr "Der er ikke nok data til at generere denne rapport."
+
+#: babybuddy/models.py:69
+msgid "Timezone"
+msgstr "Tidszone"
+
+#: babybuddy/templates/admin/base_site.html:4
+#: babybuddy/templates/admin/base_site.html:7
+#: babybuddy/templates/babybuddy/nav-dropdown.html:359
+msgid "Database Admin"
+msgstr "Database administration"
+
+#: core/templates/core/child_list.html:15
+msgid "Add Child"
+msgstr "Tilføj Barn"
+
+#: core/templates/core/diaperchange_list.html:15
+msgid "Add Diaper Change"
+msgstr "Tilføj Bleskift"
+
+#: core/templates/core/feeding_list.html:15
+msgid "Add Feeding"
+msgstr "Tilføj Madning"
+
+#: core/templates/core/note_list.html:15
+msgid "Add Note"
+msgstr "Tilføj Note"
+
+#: core/templates/core/sleep_list.html:15
+msgid "Add Sleep"
+msgstr "Tilføj Søvn"
+
+#: core/templates/core/temperature_list.html:15
+msgid "Add Temperature Reading"
+msgstr "Tilføj Temperaturmåling"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:5
+msgid "Delete All Inactive Timers"
+msgstr "Slet Alle Inaktive Timere"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:10
+msgid "Delete Inactive"
+msgstr "Slet inaktive"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:17
+msgid "Are you sure you want to delete %(number)s inactive timer%(plural)s?"
+msgstr ""
+
+#: core/templates/core/timer_list.html:68
+msgid "Delete Inactive Timers"
+msgstr "Slet Inaktive Timere"
+
+#: core/templates/core/tummytime_list.html:15
+msgid "Add Tummy Time"
+msgstr "Tilføj Mavetid"
+
+#: core/templates/core/weight_list.html:15
+msgid "Add Weight"
+msgstr "Tilføj Vægt"
+
+#: core/views.py:501
+msgid "All inactive timers deleted."
+msgstr "Alle inaktive timere blev slettet."
+
+#: core/views.py:511
+msgid "No inactive timers exist."
+msgstr "Ingen inaktive timere fundet."
+
+#: dashboard/templates/cards/feeding_last_method.html:19
+msgid "most recent"
+msgstr "nyligste"
+
+#: dashboard/templates/cards/feeding_last_method.html:21
+msgid "%(n)s feeding%(plural)s ago"
+msgstr ""
+
+#: dashboard/templates/cards/sleep_last.html:6
+msgid "Last Sleep"
+msgstr "Sidste Søvn"
+
+#: reports/templates/reports/report_list.html:11
+msgid "Diaper Change Amounts"
+msgstr "Bleskiftemængder"
+
+#: reports/graphs/diaperchange_amounts.py:27
+msgid "Diaper change amount"
+msgstr "Bleskiftemængder"
+
+#: reports/graphs/diaperchange_amounts.py:36
+msgid "Diaper Change Amounts"
+msgstr "Bleskiftemængder"
+
+#: reports/graphs/diaperchange_amounts.py:39
+msgid "Change amount"
+msgstr "Skiftemængde"
+
+#: reports/templates/reports/diaperchange_amounts.html:4
+#: reports/templates/reports/diaperchange_amounts.html:8
+msgid "Diaper Amounts"
+msgstr "Antal Bleer"
+
+#: babybuddy/models.py:21
+msgid "If supported by browser, the dashboard will only refresh when visible, and also when receiving focus."
+msgstr "Hvis det understøttes af browseren vil dashboardet kun opdateres når det er synligt og når det får fokus."
+
+#: babybuddy/models.py:40
+msgid "Hide Empty Dashboard Cards"
+msgstr "Skjul tomme Dashboard-kort"
+
+#: babybuddy/models.py:43
+msgid "Hide data older than"
+msgstr "Skjul data ældre end"
+
+#: babybuddy/models.py:45
+msgid "This setting controls which data will be shown in the dashboard."
+msgstr "Denne indstilling styrer, hvilke data der vises i dashboardet."
+
+#: babybuddy/models.py:51
+msgid "show all data"
+msgstr "vis al data"
+
+#: babybuddy/models.py:52
+msgid "1 day"
+msgstr "1 dag"
+
+#: babybuddy/models.py:53
+msgid "2 days"
+msgstr "2 dage"
+
+#: babybuddy/models.py:54
+msgid "3 days"
+msgstr "3 dage"
+
+#: babybuddy/models.py:55
+msgid "1 week"
+msgstr "1 uge"
+
+#: babybuddy/models.py:56
+msgid "4 weeks"
+msgstr "4 uger"
+
+#: babybuddy/settings/base.py:168
+msgid "Dutch"
+msgstr "Hollandsk"
+
+#: babybuddy/settings/base.py:172
+msgid "Finnish"
+msgstr "Finsk"
+
+#: babybuddy/settings/base.py:174
+msgid "Italian"
+msgstr "Italiensk"
+
+#: babybuddy/settings/base.py:175
+msgid "Polish"
+msgstr "Polsk"
+
+#: babybuddy/settings/base.py:176
+msgid "Portuguese"
+msgstr "Portugisisk"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:118
+#: core/templates/timeline/timeline.html:4
+#: core/templates/timeline/timeline.html:7
+#: dashboard/templates/dashboard/child_button_group.html:9
+msgid "Timeline"
+msgstr "Tidslinje"
+
+#: core/models.py:286
+msgid "Solid food"
+msgstr "Fast føde"
+
+#: core/models.py:297
+msgid "Parent fed"
+msgstr "Fodret af forælder"
+
+#: core/models.py:298
+msgid "Self fed"
+msgstr "Selvfodret"
+
+#: core/templates/core/diaperchange_list.html:29
+msgid "Contents"
+msgstr "Indhold"
+
+#: core/templates/core/timer_detail.html:77
+msgid "Restart timer"
+msgstr "Genstart timer"
+
+#: core/templates/core/timer_detail.html:84
+msgid "Delete timer"
+msgstr "Slet timer"
+
+#: core/templatetags/datetime.py:60
+msgid "Today"
+msgstr "I dag"
+
+#: core/templatetags/datetime.py:75
+msgid "{}, {}"
+msgstr "{}, {}"
+
+#: core/templatetags/duration.py:25
+msgid "0 days"
+msgstr "0 dage"
+
+#: core/timeline.py:137
+msgid "Amount: %(amount).0f"
+msgstr ""
+
+#: core/timeline.py:157
+msgid "Contents: %(contents)s"
+msgstr ""
+
+#: dashboard/templates/cards/diaperchange_last.html:12
+#: dashboard/templates/cards/feeding_last.html:12
+#: dashboard/templates/cards/sleep_last.html:12
+#: dashboard/templates/cards/tummytime_last.html:13
+msgid "%(since)s ago
%(time)s"
+msgstr ""
+
+#: dashboard/templates/cards/feeding_day.html:6
+msgid "Today's Feeding"
+msgstr "Dagens fodring"
+
+#: dashboard/templates/cards/feeding_day.html:20
+msgid "%(count)s feeding entries"
+msgstr ""
+
+#: dashboard/templates/cards/statistics.html:42
+msgid "No data yet"
+msgstr "Ingen data endnu"
+
+#: reports/templates/reports/report_list.html:21
+msgid "Tummy Time Durations (Sum)"
+msgstr "Mavetid (Total)"
+
+#: core/templates/timeline/_timeline.html:61
+#: dashboard/templates/dashboard/child_button_group.html:20
+msgid "Edit"
+msgstr "Rediger"
+
+#: dashboard/templatetags/cards.py:456
+msgid "Feeding frequency (past 3 days)"
+msgstr "Fodringsfrekvens (sidste 3 dage)"
+
+#: dashboard/templatetags/cards.py:460
+msgid "Feeding frequency (past 2 weeks)"
+msgstr "Fodringsfrekvens (sidste 2 uger)"
+
+#: reports/graphs/tummytime_duration.py:34
+msgid "Total duration"
+msgstr "Samlet længde"
+
+#: reports/graphs/tummytime_duration.py:41
+#: reports/graphs/tummytime_duration.py:55
+msgid "Number of sessions"
+msgstr ""
+
+#: reports/graphs/tummytime_duration.py:50
+msgid "Total Tummy Time Durations"
+msgstr ""
+
+#: reports/graphs/tummytime_duration.py:53
+msgid "Total duration (minutes)"
+msgstr ""
+
+#: reports/templates/reports/tummytime_duration.html:4
+#: reports/templates/reports/tummytime_duration.html:8
+msgid "Total Tummy Time Durations"
+msgstr ""
+
+#: babybuddy/settings/base.py:169
+msgid "English (US)"
+msgstr "Engelsk (US)"
+
+#: babybuddy/settings/base.py:170
+msgid "English (UK)"
+msgstr "Engelsk (UK)"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:171
+msgid "Measurements"
+msgstr "Målinger"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:207 core/models.py:369
+#: core/models.py:381 core/models.py:382 core/models.py:385
+#: core/templates/core/height_confirm_delete.html:7
+#: core/templates/core/height_form.html:13
+#: core/templates/core/height_list.html:4
+#: core/templates/core/height_list.html:7
+#: core/templates/core/height_list.html:12
+#: core/templates/core/height_list.html:29 reports/graphs/height_change.py:19
+#: reports/graphs/height_change.py:30
+#: reports/templates/reports/height_change.html:4
+#: reports/templates/reports/height_change.html:8
+#: reports/templates/reports/report_list.html:17
+msgid "Height"
+msgstr "Højde"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:213
+msgid "Height entry"
+msgstr "Højderegistrering"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:221 core/models.py:338
+#: core/models.py:351 core/models.py:352 core/models.py:355
+#: core/templates/core/head_circumference_confirm_delete.html:7
+#: core/templates/core/head_circumference_form.html:13
+#: core/templates/core/head_circumference_list.html:4
+#: core/templates/core/head_circumference_list.html:7
+#: core/templates/core/head_circumference_list.html:12
+#: core/templates/core/head_circumference_list.html:29
+#: reports/graphs/head_circumference_change.py:19
+#: reports/graphs/head_circumference_change.py:30
+#: reports/templates/reports/head_circumference_change.html:4
+#: reports/templates/reports/head_circumference_change.html:8
+#: reports/templates/reports/report_list.html:16
+msgid "Head Circumference"
+msgstr "Hovedmål"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:227
+msgid "Head Circumference entry"
+msgstr "Hovedmålsregistrering"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:235 core/models.py:139
+#: core/models.py:151 core/models.py:152 core/models.py:155
+#: core/templates/core/bmi_confirm_delete.html:7
+#: core/templates/core/bmi_form.html:13 core/templates/core/bmi_list.html:4
+#: core/templates/core/bmi_list.html:7 core/templates/core/bmi_list.html:12
+#: core/templates/core/bmi_list.html:29 reports/graphs/bmi_change.py:19
+#: reports/graphs/bmi_change.py:30 reports/templates/reports/bmi_change.html:4
+#: reports/templates/reports/bmi_change.html:8
+msgid "BMI"
+msgstr "BMI"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:241
+msgid "BMI entry"
+msgstr "BMI-registrering"
+
+#: core/models.py:452
+msgid "Napping"
+msgstr "Sover"
+
+#: core/templates/core/bmi_confirm_delete.html:4
+msgid "Delete a BMI Entry"
+msgstr "Slet en BMI Registrering"
+
+#: core/templates/core/bmi_form.html:8 core/templates/core/bmi_form.html:17
+#: core/templates/core/bmi_form.html:27
+msgid "Add a BMI Entry"
+msgstr "Tilføj en BMI Registrering"
+
+#: core/templates/core/bmi_list.html:15
+msgid "Add BMI"
+msgstr "Tilføj BMI"
+
+#: core/templates/core/bmi_list.html:70
+msgid "No bmi entries found."
+msgstr "Kunne ikke finde nogen bmi registreringer"
+
+#: core/templates/core/head_circumference_confirm_delete.html:4
+msgid "Delete a Head Circumference Entry"
+msgstr "Slet et Hovedmål"
+
+#: core/templates/core/head_circumference_form.html:8
+#: core/templates/core/head_circumference_form.html:17
+#: core/templates/core/head_circumference_form.html:27
+msgid "Add a Head Circumference Entry"
+msgstr "Tilføj et Hovedmål"
+
+#: core/templates/core/head_circumference_list.html:15
+msgid "Add Head Circumference"
+msgstr "Tilføj Hovedmål"
+
+#: core/templates/core/head_circumference_list.html:70
+msgid "No head circumference entries found."
+msgstr "Kunne ikke finde nogen hovedmål"
+
+#: core/templates/core/height_confirm_delete.html:4
+msgid "Delete a Height Entry"
+msgstr "Slet en Højderegistrering"
+
+#: core/templates/core/height_form.html:8
+#: core/templates/core/height_form.html:17
+#: core/templates/core/height_form.html:27
+msgid "Add a Height Entry"
+msgstr "Tilføj en Højderegistrering"
+
+#: core/templates/core/height_list.html:15
+msgid "Add Height"
+msgstr "Tilføj Højde"
+
+#: core/templates/core/height_list.html:70
+msgid "No height entries found."
+msgstr "Kunne ikke finde nogen højderegistreringer"
+
+#: core/templates/timeline/_timeline.html:44
+msgid "Duration: %(duration)s"
+msgstr ""
+
+#: core/templates/timeline/_timeline.html:53
+msgid "%(since)s since previous"
+msgstr ""
+
+#: core/templates/timeline/_timeline.html:85
+msgid "No events"
+msgstr "Ingen begivenheder"
+
+#: core/timeline.py:185
+msgid "%(child)s had a %(type)s diaper change."
+msgstr ""
+
+#: dashboard/templatetags/cards.py:372
+msgid "Height change per week"
+msgstr "Højdeændring per uge"
+
+#: dashboard/templatetags/cards.py:382
+msgid "Head circumference change per week"
+msgstr "Ændring i hovedmål per uge"
+
+#: dashboard/templatetags/cards.py:392
+msgid "BMI change per week"
+msgstr "BMI-ændring per uge"
+
+#: reports/graphs/bmi_change.py:27
+msgid "BMI"
+msgstr "BMI"
+
+#: reports/graphs/feeding_amounts.py:69
+msgid "Total Feeding Amount by Type"
+msgstr ""
+
+#: reports/graphs/head_circumference_change.py:27
+msgid "Head Circumference"
+msgstr "Hovedmål"
+
+#: reports/graphs/height_change.py:27
+msgid "Height"
+msgstr "Højde"
+
+#: babybuddy/settings/base.py:167
+msgid "Chinese (simplified)"
+msgstr "Kinesisk (forenklet)"
+
+#: babybuddy/templates/error/400.html:4 babybuddy/templates/error/400.html:7
+msgid "Bad Request"
+msgstr "Dårlig Forespørgsel"
+
+#: babybuddy/templates/error/403_csrf_bad_origin.html:14
+msgid "How to Fix"
+msgstr "Sådan rettes"
+
+#: babybuddy/templates/error/403_csrf_bad_origin.html:15
+msgid "Add %(origin)s to the CSRF_TRUSTED_ORIGINS
environment variable. If multiple origins are required separate with commas."
+msgstr ""
+
+#: babybuddy/templates/error/404.html:4 babybuddy/templates/error/404.html:7
+msgid "Page Not Found"
+msgstr "Siden blev ikke fundet"
+
+#: babybuddy/templates/error/404.html:9
+msgid "The path %(request_path)s
does not exist."
+msgstr ""
+
+#: babybuddy/templates/error/500.html:4 babybuddy/templates/error/500.html:7
+msgid "Server Error"
+msgstr "Serverfejl"
+
+#: babybuddy/templates/error/base.html:14
+msgid "Return to Baby Buddy"
+msgstr "Tilbage til Baby Buddy"
+
+#: babybuddy/views.py:43
+msgid "Forbidden"
+msgstr "Forbudt"
+
+#: babybuddy/views.py:44
+msgid "CSRF verification failed. Request aborted."
+msgstr "CSRF verifikationen fejlede. Forespørgslen blev afbrudt."
+
+#: babybuddy/settings/base.py:166
+msgid "Catalan"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:93
+#: babybuddy/templates/babybuddy/nav-dropdown.html:316 core/models.py:437
+#: core/models.py:438 core/models.py:441
+#: core/templates/core/pumping_confirm_delete.html:7
+#: core/templates/core/pumping_form.html:13
+#: core/templates/core/pumping_list.html:4
+#: core/templates/core/pumping_list.html:7
+#: core/templates/core/pumping_list.html:12
+#: reports/templates/reports/pumping_amounts.html:4
+#: reports/templates/reports/pumping_amounts.html:8
+msgid "Pumping"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:322
+msgid "Pumping entry"
+msgstr ""
+
+#: core/filters.py:11 core/models.py:96 core/models.py:115
+msgid "Tag"
+msgstr ""
+
+#: core/forms.py:136
+msgid "Click on the tags to add (+) or remove (-) tags or use the text editor to create new tags."
+msgstr ""
+
+#: core/models.py:90
+msgid "Last used"
+msgstr "Sidst brugt"
+
+#: core/models.py:97 core/templates/core/bmi_list.html:30
+#: core/templates/core/diaperchange_list.html:32
+#: core/templates/core/feeding_list.html:35
+#: core/templates/core/head_circumference_list.html:30
+#: core/templates/core/height_list.html:30
+#: core/templates/core/note_list.html:30 core/templates/core/sleep_list.html:32
+#: core/templates/core/temperature_list.html:30
+#: core/templates/core/tummytime_list.html:31
+#: core/templates/core/weight_list.html:30
+msgid "Tags"
+msgstr ""
+
+#: core/templates/core/pumping_confirm_delete.html:4
+msgid "Delete a Pumping Entry"
+msgstr ""
+
+#: core/templates/core/pumping_form.html:8
+#: core/templates/core/pumping_form.html:17
+#: core/templates/core/pumping_form.html:27
+msgid "Add a Pumping Entry"
+msgstr ""
+
+#: core/templates/core/pumping_list.html:15
+msgid "Add Pumping Entry"
+msgstr ""
+
+#: core/templates/core/pumping_list.html:66
+msgid "No pumping entries found."
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:22
+msgid "Tag name"
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:27
+msgid "Recently used:"
+msgstr "Nyligt brugt:"
+
+#: core/templates/core/widget_tag_editor.html:45
+msgctxt "Error modal"
+msgid "Error"
+msgstr "Fejl"
+
+#: core/templates/core/widget_tag_editor.html:50
+msgctxt "Error modal"
+msgid "An error ocurred."
+msgstr "Der er sket en fejl"
+
+#: core/templates/core/widget_tag_editor.html:51
+msgctxt "Error modal"
+msgid "Invalid tag name."
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:52
+msgctxt "Error modal"
+msgid "Failed to create tag."
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:53
+msgctxt "Error modal"
+msgid "Failed to obtain tag data."
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:58
+msgctxt "Error modal"
+msgid "Close"
+msgstr "Luk"
+
+#: dashboard/templates/cards/feeding_day.html:32
+msgid " %(since)s
"
+msgstr ""
+
+#: dashboard/templatetags/cards.py:410
+msgid "Diaper change frequency (past 3 days)"
+msgstr ""
+
+#: dashboard/templatetags/cards.py:414
+msgid "Diaper change frequency (past 2 weeks)"
+msgstr ""
+
+#: reports/graphs/pumping_amounts.py:57
+msgid "Total Pumping Amount"
+msgstr ""
+
+#: reports/graphs/pumping_amounts.py:60
+msgid "Pumping Amount"
+msgstr ""
+
+#: reports/templates/reports/report_list.html:10
+msgid "Body Mass Index (BMI)"
+msgstr "Kropsmasseindeks (BMI)"
+
+#: reports/templates/reports/report_list.html:18
+msgid "Pumping Amounts"
+msgstr ""
+
+#: core/templates/core/timer_confirm_delete_inactive.html:17
+msgid "Are you sure you want to delete %(number)s inactive timer?"
+msgid_plural "Are you sure you want to delete %(number)s inactive timers?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: dashboard/templates/cards/feeding_day.html:25
+msgid "%(counter)s feeding"
+msgid_plural "%(counter)s feedings"
+msgstr[0] ""
+msgstr[1] ""
+
+#: dashboard/templates/cards/feeding_last_method.html:21
+msgid "%(n)s feeding ago"
+msgid_plural "%(n)s feedings ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: dashboard/templates/cards/sleep_naps_day.html:12
+msgid "%(count)s nap"
+msgid_plural "%(count)s naps"
+msgstr[0] ""
+msgstr[1] ""
+
+#: dashboard/templates/cards/timer_list.html:12
+msgid "%(count)s active timer"
+msgid_plural "%(count)s active timers"
+msgstr[0] ""
+msgstr[1] ""
+
diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo
index 0bb684d8..17b9bd79 100644
Binary files a/locale/de/LC_MESSAGES/django.mo and b/locale/de/LC_MESSAGES/django.mo differ
diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po
index fec365c8..97244068 100644
--- a/locale/de/LC_MESSAGES/django.po
+++ b/locale/de/LC_MESSAGES/django.po
@@ -1209,7 +1209,7 @@ msgstr "Aktionen des Kindes"
#: reports/templates/reports/diaperchange_types.html:8
#: reports/templates/reports/report_list.html:12
msgid "Diaper Change Types"
-msgstr "Windewechsel Typen"
+msgstr "Windelwechsel Typen"
#: reports/templates/reports/diaperchange_lifetimes.html:4
#: reports/templates/reports/diaperchange_lifetimes.html:8
@@ -1890,7 +1890,7 @@ msgstr "Keine Ereignisse"
#: core/timeline.py:185
msgid "%(child)s had a %(type)s diaper change."
-msgstr "%(child)s hatten einen %(type)s Windelwechsel."
+msgstr "%(child)s hatte einen %(type)s Windelwechsel."
#: dashboard/templatetags/cards.py:372
msgid "Height change per week"
@@ -1962,7 +1962,7 @@ msgstr "CSRF Verifikation fehlgeschlagen. Anfrage abgebrochen."
#: babybuddy/settings/base.py:166
msgid "Catalan"
-msgstr ""
+msgstr "Katalanisch"
#: babybuddy/templates/babybuddy/nav-dropdown.html:93
#: babybuddy/templates/babybuddy/nav-dropdown.html:316 core/models.py:437
@@ -1975,11 +1975,11 @@ msgstr ""
#: reports/templates/reports/pumping_amounts.html:4
#: reports/templates/reports/pumping_amounts.html:8
msgid "Pumping"
-msgstr ""
+msgstr "Abpumpen"
#: babybuddy/templates/babybuddy/nav-dropdown.html:322
msgid "Pumping entry"
-msgstr ""
+msgstr "Abpump-Eintrag"
#: core/filters.py:11 core/models.py:96 core/models.py:115
msgid "Tag"
@@ -1987,11 +1987,11 @@ msgstr ""
#: core/forms.py:136
msgid "Click on the tags to add (+) or remove (-) tags or use the text editor to create new tags."
-msgstr ""
+msgstr "Klicke auf den gewünschten Tag um ihn hinzuzufügen (+) oder zu entfernen (-) oder gib einen neuen Tag ein."
#: core/models.py:90
msgid "Last used"
-msgstr ""
+msgstr "zuletzt verwendet"
#: core/models.py:97 core/templates/core/bmi_list.html:30
#: core/templates/core/diaperchange_list.html:32
@@ -2007,21 +2007,21 @@ msgstr ""
#: core/templates/core/pumping_confirm_delete.html:4
msgid "Delete a Pumping Entry"
-msgstr ""
+msgstr "Abpump-Eintrag löschen"
#: core/templates/core/pumping_form.html:8
#: core/templates/core/pumping_form.html:17
#: core/templates/core/pumping_form.html:27
msgid "Add a Pumping Entry"
-msgstr ""
+msgstr "Abpump-Eintrag hinzufügen"
#: core/templates/core/pumping_list.html:15
msgid "Add Pumping Entry"
-msgstr ""
+msgstr "Abpump-Eintrag hinzufügen"
#: core/templates/core/pumping_list.html:66
msgid "No pumping entries found."
-msgstr ""
+msgstr "Keine Abpump-Einträge gefunden."
#: core/templates/core/widget_tag_editor.html:22
msgid "Tag name"
@@ -2029,27 +2029,27 @@ msgstr ""
#: core/templates/core/widget_tag_editor.html:27
msgid "Recently used:"
-msgstr ""
+msgstr "Zuletzt verwendet:"
#: core/templates/core/widget_tag_editor.html:45
msgctxt "Error modal"
msgid "Error"
-msgstr ""
+msgstr "Fehler"
#: core/templates/core/widget_tag_editor.html:50
msgctxt "Error modal"
msgid "An error ocurred."
-msgstr ""
+msgstr "Ein Fehler ist aufgetreten."
#: core/templates/core/widget_tag_editor.html:51
msgctxt "Error modal"
msgid "Invalid tag name."
-msgstr ""
+msgstr "Ungültiger Tag-Name."
#: core/templates/core/widget_tag_editor.html:52
msgctxt "Error modal"
msgid "Failed to create tag."
-msgstr ""
+msgstr "Tag konnte nicht erstellt werden."
#: core/templates/core/widget_tag_editor.html:53
msgctxt "Error modal"
@@ -2059,35 +2059,35 @@ msgstr ""
#: core/templates/core/widget_tag_editor.html:58
msgctxt "Error modal"
msgid "Close"
-msgstr ""
+msgstr "Schließen"
#: dashboard/templates/cards/feeding_day.html:32
msgid " %(since)s
"
-msgstr ""
+msgstr " %(since)s
"
#: dashboard/templatetags/cards.py:410
msgid "Diaper change frequency (past 3 days)"
-msgstr ""
+msgstr "Windelwechselintervall (die letzten drei Tage)"
#: dashboard/templatetags/cards.py:414
msgid "Diaper change frequency (past 2 weeks)"
-msgstr ""
+msgstr "Windelwechselintervall (die letzten zwei Wochen)"
#: reports/graphs/pumping_amounts.py:57
msgid "Total Pumping Amount"
-msgstr ""
+msgstr "Gesamte abgepumpte Menge"
#: reports/graphs/pumping_amounts.py:60
msgid "Pumping Amount"
-msgstr ""
+msgstr "Abgepumpte Menge"
#: reports/templates/reports/report_list.html:10
msgid "Body Mass Index (BMI)"
-msgstr ""
+msgstr "Body Mass Index (BMI)"
#: reports/templates/reports/report_list.html:18
msgid "Pumping Amounts"
-msgstr ""
+msgstr "Abgepumpte Menge"
#: core/templates/core/timer_confirm_delete_inactive.html:17
#, fuzzy
diff --git a/locale/es/LC_MESSAGES/django.mo b/locale/es/LC_MESSAGES/django.mo
index 09d6c80c..1c400d80 100644
Binary files a/locale/es/LC_MESSAGES/django.mo and b/locale/es/LC_MESSAGES/django.mo differ
diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po
index 587f08fe..edb4f0f8 100644
--- a/locale/es/LC_MESSAGES/django.po
+++ b/locale/es/LC_MESSAGES/django.po
@@ -1943,8 +1943,7 @@ msgstr "Cómo arreglarlo"
#: babybuddy/templates/error/403_csrf_bad_origin.html:15
msgid "Add %(origin)s to the CSRF_TRUSTED_ORIGINS
environment variable. If multiple origins are required separate with commas."
-msgstr "Añade %(origin)s a la variable de entorno CSRF_TRUSTED_ORIGINS
. Si se requieren orígenes múltiples, sepáralos por comas.\n"
-""
+msgstr "Añade %(origin)s a la variable de entorno CSRF_TRUSTED_ORIGINS
. Si se requieren orígenes múltiples, sepáralos por comas."
#: babybuddy/templates/error/404.html:4 babybuddy/templates/error/404.html:7
msgid "Page Not Found"
diff --git a/locale/fi/LC_MESSAGES/django.mo b/locale/fi/LC_MESSAGES/django.mo
index c95c3d3b..87face8f 100644
Binary files a/locale/fi/LC_MESSAGES/django.mo and b/locale/fi/LC_MESSAGES/django.mo differ
diff --git a/locale/fr/LC_MESSAGES/django.mo b/locale/fr/LC_MESSAGES/django.mo
index 1eeb4ff2..b91071aa 100644
Binary files a/locale/fr/LC_MESSAGES/django.mo and b/locale/fr/LC_MESSAGES/django.mo differ
diff --git a/locale/hu/LC_MESSAGES/django.mo b/locale/hu/LC_MESSAGES/django.mo
new file mode 100644
index 00000000..988ff236
Binary files /dev/null and b/locale/hu/LC_MESSAGES/django.mo differ
diff --git a/locale/hu/LC_MESSAGES/django.po b/locale/hu/LC_MESSAGES/django.po
new file mode 100644
index 00000000..a639807f
--- /dev/null
+++ b/locale/hu/LC_MESSAGES/django.po
@@ -0,0 +1,2130 @@
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: POEditor.com\n"
+"Project-Id-Version: Baby Buddy\n"
+"Language: hu\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: babybuddy/admin.py:12 babybuddy/admin.py:13
+#: babybuddy/templates/babybuddy/nav-dropdown.html:347
+#: babybuddy/templates/babybuddy/user_settings_form.html:8
+msgid "Settings"
+msgstr "Beállítások"
+
+#: babybuddy/admin.py:17 babybuddy/templates/babybuddy/nav-dropdown.html:111
+#: babybuddy/templates/babybuddy/user_settings_form.html:61
+#: dashboard/templates/dashboard/child.html:4
+#: dashboard/templates/dashboard/child.html:9
+#: dashboard/templates/dashboard/child_button_group.html:6
+#: dashboard/templates/dashboard/dashboard.html:4
+#: dashboard/templates/dashboard/dashboard.html:7
+msgid "Dashboard"
+msgstr "Irányítópult"
+
+#: babybuddy/models.py:19
+msgid "Refresh rate"
+msgstr "Frissítési ráta"
+
+#: babybuddy/models.py:21
+msgid "This setting will only be used when a browser does not support refresh on focus."
+msgstr "Ezt a beállítást csak akkor használjuk, ha a böngésző nem támogatja a tartalom frissítését fókuszba kerüléskor."
+
+#: babybuddy/models.py:28
+msgid "disabled"
+msgstr "kikapcsolva"
+
+#: babybuddy/models.py:29
+msgid "1 min."
+msgstr "1 perc"
+
+#: babybuddy/models.py:30
+msgid "2 min."
+msgstr "2 perc"
+
+#: babybuddy/models.py:31
+msgid "3 min."
+msgstr "3 perc"
+
+#: babybuddy/models.py:32
+msgid "4 min."
+msgstr "4 perc"
+
+#: babybuddy/models.py:33
+msgid "5 min."
+msgstr "5 perc"
+
+#: babybuddy/models.py:34
+msgid "10 min."
+msgstr "10 perc"
+
+#: babybuddy/models.py:35
+msgid "15 min."
+msgstr "15 perc"
+
+#: babybuddy/models.py:36
+msgid "30 min."
+msgstr "30 perc"
+
+#: babybuddy/models.py:63
+msgid "Language"
+msgstr "Nyelv"
+
+#: babybuddy/models.py:73
+msgid "{user}'s Settings"
+msgstr "{user} beállításai"
+
+#: babybuddy/settings/base.py:171
+msgid "English"
+msgstr "Angol"
+
+#: babybuddy/settings/base.py:171
+msgid "French"
+msgstr "Francia"
+
+#: babybuddy/templates/error/403.html:4 babybuddy/templates/error/403.html:7
+msgid "Permission Denied"
+msgstr "Hozzáférés megtagadva"
+
+#: babybuddy/templates/403.html:12
+msgid "You do not have permission to access this resource.\n"
+" Contact a site administrator for assistance."
+msgstr "Nincs hozzáférése az erőforráshoz. \n"
+"Keresse meg a rendszergazdát."
+
+#: babybuddy/templates/babybuddy/base.html:36
+msgid "Home"
+msgstr "Főoldal"
+
+#: babybuddy/templates/babybuddy/filter.html:18
+msgid "Filter"
+msgstr "Szűrő"
+
+#: babybuddy/templates/babybuddy/filter.html:19
+msgid "Reset"
+msgstr "Visszaállítás"
+
+#: babybuddy/templates/babybuddy/filter.html:32
+msgid "Filters"
+msgstr "Szűrők"
+
+#: babybuddy/templates/babybuddy/form.html:14
+#: babybuddy/templates/babybuddy/user_settings_form.html:89
+msgid "Submit"
+msgstr "OK"
+
+#: babybuddy/templates/babybuddy/messages.html:18
+#: babybuddy/templates/babybuddy/user_settings_form.html:19
+msgid "Error: %(error)s"
+msgstr "Hiba: %(error)s"
+
+#: babybuddy/templates/babybuddy/messages.html:23
+msgid "Error: Some fields have errors. See below for details. "
+msgstr "Hiba: Néhány mező hibás. Részletek lentebb. "
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:51 core/models.py:248
+#: core/models.py:252
+msgid "Diaper Change"
+msgstr "Pelenkacsere"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:57
+#: babybuddy/templates/babybuddy/nav-dropdown.html:281 core/models.py:312
+#: core/models.py:316 core/templates/core/timer_detail.html:43
+msgid "Feeding"
+msgstr "Etetés"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:63
+#: babybuddy/templates/babybuddy/nav-dropdown.html:157 core/models.py:396
+#: core/models.py:407 core/models.py:411 core/templates/core/note_list.html:29
+msgid "Note"
+msgstr "Megjegyzés"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:69
+#: babybuddy/templates/babybuddy/nav-dropdown.html:288
+#: babybuddy/templates/babybuddy/welcome.html:42 core/models.py:467
+#: core/models.py:468 core/models.py:471
+#: core/templates/core/sleep_confirm_delete.html:7
+#: core/templates/core/sleep_form.html:13 core/templates/core/sleep_list.html:4
+#: core/templates/core/sleep_list.html:7 core/templates/core/sleep_list.html:12
+#: core/templates/core/timer_detail.html:51
+msgid "Sleep"
+msgstr "Alvás"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:81
+#: babybuddy/templates/babybuddy/nav-dropdown.html:301
+#: babybuddy/templates/babybuddy/welcome.html:50 core/models.py:647
+#: core/models.py:648 core/models.py:651
+#: core/templates/core/timer_detail.html:59
+#: core/templates/core/tummytime_confirm_delete.html:7
+#: core/templates/core/tummytime_form.html:13
+#: core/templates/core/tummytime_list.html:4
+#: core/templates/core/tummytime_list.html:7
+#: core/templates/core/tummytime_list.html:12
+msgid "Tummy Time"
+msgstr "Pocakidő"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:87
+#: babybuddy/templates/babybuddy/nav-dropdown.html:193 core/models.py:673
+#: core/models.py:685 core/models.py:686 core/models.py:689
+#: core/templates/core/weight_confirm_delete.html:7
+#: core/templates/core/weight_form.html:13
+#: core/templates/core/weight_list.html:4
+#: core/templates/core/weight_list.html:7
+#: core/templates/core/weight_list.html:12
+#: core/templates/core/weight_list.html:29 reports/graphs/weight_change.py:19
+#: reports/graphs/weight_change.py:30
+#: reports/templates/reports/report_list.html:22
+#: reports/templates/reports/weight_change.html:4
+#: reports/templates/reports/weight_change.html:8
+msgid "Weight"
+msgstr "Tömeg"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:129
+#: babybuddy/templates/babybuddy/nav-dropdown.html:137 core/models.py:188
+#: core/templates/core/child_confirm_delete.html:7
+#: core/templates/core/child_detail.html:7
+#: core/templates/core/child_form.html:13 core/templates/core/child_list.html:4
+#: core/templates/core/child_list.html:7 core/templates/core/child_list.html:12
+#: dashboard/templates/dashboard/child.html:7
+#: reports/templates/reports/base.html:7
+msgid "Children"
+msgstr "Gyermekek"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:143 core/models.py:137
+#: core/models.py:187 core/models.py:221 core/models.py:274 core/models.py:335
+#: core/models.py:367 core/models.py:394 core/models.py:426 core/models.py:450
+#: core/models.py:503 core/models.py:537 core/models.py:630 core/models.py:671
+#: core/templates/core/bmi_list.html:27
+#: core/templates/core/diaperchange_list.html:27
+#: core/templates/core/feeding_list.html:27
+#: core/templates/core/head_circumference_list.html:27
+#: core/templates/core/height_list.html:27
+#: core/templates/core/note_list.html:27
+#: core/templates/core/pumping_list.html:27
+#: core/templates/core/sleep_list.html:28
+#: core/templates/core/temperature_list.html:27
+#: core/templates/core/timer_list.html:27
+#: core/templates/core/tummytime_list.html:27
+#: core/templates/core/weight_list.html:27
+msgid "Child"
+msgstr "Gyermek"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:151 core/models.py:143
+#: core/models.py:240 core/models.py:304 core/models.py:343 core/models.py:373
+#: core/models.py:408 core/models.py:430 core/models.py:458 core/models.py:511
+#: core/models.py:677 core/templates/core/note_confirm_delete.html:7
+#: core/templates/core/note_form.html:13 core/templates/core/note_list.html:4
+#: core/templates/core/note_list.html:7 core/templates/core/note_list.html:12
+msgid "Notes"
+msgstr "Megjegyzések"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:199
+msgid "Weight entry"
+msgstr "Tömegbevitel"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:255
+msgid "Activities"
+msgstr "Elfoglaltságok"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:262
+#: reports/graphs/diaperchange_lifetimes.py:27
+msgid "Changes"
+msgstr "Pelenkacsere"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:268
+msgid "Change"
+msgstr "Csere bevitele"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:275
+#: babybuddy/templates/babybuddy/welcome.html:34 core/models.py:313
+#: core/templates/core/feeding_confirm_delete.html:7
+#: core/templates/core/feeding_form.html:13
+#: core/templates/core/feeding_list.html:4
+#: core/templates/core/feeding_list.html:7
+#: core/templates/core/feeding_list.html:12
+msgid "Feedings"
+msgstr "Etetések"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:294
+msgid "Sleep entry"
+msgstr "Alvás bevitele"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:307
+msgid "Tummy Time entry"
+msgstr "Pocakidő bevitele"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:346
+#: babybuddy/templates/babybuddy/user_list.html:17
+#: babybuddy/templates/babybuddy/user_password_form.html:7
+#: babybuddy/templates/babybuddy/user_settings_form.html:7 core/models.py:556
+#: core/templates/core/timer_list.html:32
+msgid "User"
+msgstr "Felhasználó"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:348
+msgid "Password"
+msgstr "Jelszó"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:352
+msgid "Logout"
+msgstr "Kijelentkezés"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:355
+msgid "Site"
+msgstr "Oldal"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:356
+msgid "API Browser"
+msgstr "API kimenet megtekintése"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:358
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:7
+#: babybuddy/templates/babybuddy/user_form.html:13
+#: babybuddy/templates/babybuddy/user_list.html:4
+#: babybuddy/templates/babybuddy/user_list.html:7
+msgid "Users"
+msgstr "Felhasználók"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:250
+msgid "Backend Admin"
+msgstr "Backend Admin"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:361
+msgid "Support"
+msgstr "A projektről"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:363
+msgid "Source Code"
+msgstr "Forráskód"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:365
+msgid "Chat / Support"
+msgstr "Chat / Támogatás"
+
+#: babybuddy/templates/babybuddy/paginator.html:11
+#: core/templates/timeline/_timeline.html:5
+#: core/templates/timeline/_timeline.html:7
+#: core/templates/timeline/_timeline.html:71
+#: core/templates/timeline/_timeline.html:73
+#: dashboard/templates/cards/feeding_day.html:43
+#: dashboard/templates/cards/feeding_last_method.html:34
+#: dashboard/templates/cards/statistics.html:34
+msgid "Previous"
+msgstr "Előző"
+
+#: babybuddy/templates/babybuddy/paginator.html:28
+#: core/templates/timeline/_timeline.html:12
+#: core/templates/timeline/_timeline.html:14
+#: core/templates/timeline/_timeline.html:78
+#: core/templates/timeline/_timeline.html:80
+#: dashboard/templates/cards/feeding_day.html:47
+#: dashboard/templates/cards/feeding_last_method.html:38
+#: dashboard/templates/cards/statistics.html:38
+msgid "Next"
+msgstr "Következő"
+
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:4
+msgid "Delete User"
+msgstr "Felhasználó törlése"
+
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:9
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:18
+#: core/templates/core/bmi_confirm_delete.html:8
+#: core/templates/core/bmi_confirm_delete.html:17
+#: core/templates/core/child_confirm_delete.html:9
+#: core/templates/core/child_confirm_delete.html:31
+#: core/templates/core/diaperchange_confirm_delete.html:8
+#: core/templates/core/diaperchange_confirm_delete.html:17
+#: core/templates/core/feeding_confirm_delete.html:8
+#: core/templates/core/feeding_confirm_delete.html:17
+#: core/templates/core/head_circumference_confirm_delete.html:8
+#: core/templates/core/head_circumference_confirm_delete.html:17
+#: core/templates/core/height_confirm_delete.html:8
+#: core/templates/core/height_confirm_delete.html:17
+#: core/templates/core/note_confirm_delete.html:8
+#: core/templates/core/note_confirm_delete.html:17
+#: core/templates/core/pumping_confirm_delete.html:8
+#: core/templates/core/pumping_confirm_delete.html:17
+#: core/templates/core/sleep_confirm_delete.html:8
+#: core/templates/core/sleep_confirm_delete.html:17
+#: core/templates/core/temperature_confirm_delete.html:8
+#: core/templates/core/temperature_confirm_delete.html:17
+#: core/templates/core/timer_confirm_delete.html:11
+#: core/templates/core/timer_confirm_delete.html:20
+#: core/templates/core/timer_confirm_delete_inactive.html:23
+#: core/templates/core/tummytime_confirm_delete.html:8
+#: core/templates/core/tummytime_confirm_delete.html:17
+#: core/templates/core/weight_confirm_delete.html:8
+#: core/templates/core/weight_confirm_delete.html:17
+#: dashboard/templates/dashboard/child_button_group.html:27
+msgid "Delete"
+msgstr "Törlés"
+
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:15
+#: core/templates/core/bmi_confirm_delete.html:14
+#: core/templates/core/child_confirm_delete.html:15
+#: core/templates/core/diaperchange_confirm_delete.html:14
+#: core/templates/core/feeding_confirm_delete.html:14
+#: core/templates/core/head_circumference_confirm_delete.html:14
+#: core/templates/core/height_confirm_delete.html:14
+#: core/templates/core/note_confirm_delete.html:14
+#: core/templates/core/pumping_confirm_delete.html:14
+#: core/templates/core/sleep_confirm_delete.html:14
+#: core/templates/core/temperature_confirm_delete.html:14
+#: core/templates/core/timer_confirm_delete.html:17
+#: core/templates/core/tummytime_confirm_delete.html:14
+#: core/templates/core/weight_confirm_delete.html:14
+msgid "Are you sure you want to delete %(object)s?
"
+msgstr "Biztosan törlöd a következőt %(object)s?
"
+
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:19
+#: core/templates/core/bmi_confirm_delete.html:18
+#: core/templates/core/child_confirm_delete.html:32
+#: core/templates/core/diaperchange_confirm_delete.html:18
+#: core/templates/core/feeding_confirm_delete.html:18
+#: core/templates/core/head_circumference_confirm_delete.html:18
+#: core/templates/core/height_confirm_delete.html:18
+#: core/templates/core/note_confirm_delete.html:18
+#: core/templates/core/pumping_confirm_delete.html:18
+#: core/templates/core/sleep_confirm_delete.html:18
+#: core/templates/core/temperature_confirm_delete.html:18
+#: core/templates/core/timer_confirm_delete.html:21
+#: core/templates/core/timer_confirm_delete_inactive.html:24
+#: core/templates/core/tummytime_confirm_delete.html:18
+#: core/templates/core/weight_confirm_delete.html:18
+msgid "Cancel"
+msgstr "Mégse"
+
+#: babybuddy/templates/babybuddy/user_form.html:8
+#: babybuddy/templates/babybuddy/user_form.html:18
+#: babybuddy/templates/babybuddy/user_form.html:28
+#: babybuddy/templates/babybuddy/user_list.html:65
+msgid "Create User"
+msgstr "Felhasználó létrehozása"
+
+#: babybuddy/templates/babybuddy/user_form.html:16
+#: core/templates/core/bmi_form.html:15 core/templates/core/child_form.html:16
+#: core/templates/core/diaperchange_form.html:15
+#: core/templates/core/feeding_form.html:15
+#: core/templates/core/head_circumference_form.html:15
+#: core/templates/core/height_form.html:15
+#: core/templates/core/note_form.html:15
+#: core/templates/core/pumping_form.html:15
+#: core/templates/core/sleep_form.html:15
+#: core/templates/core/temperature_form.html:15
+#: core/templates/core/timer_form.html:10
+#: core/templates/core/tummytime_form.html:15
+#: core/templates/core/weight_form.html:15
+msgid "Update"
+msgstr "Frissítés"
+
+#: babybuddy/templates/babybuddy/user_form.html:24
+#: core/templates/core/bmi_form.html:23 core/templates/core/child_form.html:24
+#: core/templates/core/diaperchange_form.html:23
+#: core/templates/core/feeding_form.html:23
+#: core/templates/core/head_circumference_form.html:23
+#: core/templates/core/height_form.html:23
+#: core/templates/core/note_form.html:23
+#: core/templates/core/pumping_form.html:23
+#: core/templates/core/sleep_form.html:23
+#: core/templates/core/temperature_form.html:23
+#: core/templates/core/timer_form.html:18
+#: core/templates/core/tummytime_form.html:23
+#: core/templates/core/weight_form.html:23
+msgid "Update %(object)s
"
+msgstr "%(object)s frissítése
"
+
+#: babybuddy/templates/babybuddy/user_list.html:18
+#: core/templates/core/child_list.html:25
+msgid "First Name"
+msgstr "Keresztnév"
+
+#: babybuddy/templates/babybuddy/user_list.html:19
+#: core/templates/core/child_list.html:26
+msgid "Last Name"
+msgstr "Vezetéknév"
+
+#: babybuddy/templates/babybuddy/user_list.html:20
+msgid "Email"
+msgstr "Email"
+
+#: babybuddy/templates/babybuddy/user_list.html:21
+msgid "Staff"
+msgstr "Admin"
+
+#: babybuddy/templates/babybuddy/user_list.html:22 core/models.py:551
+#: core/templates/core/timer_list.html:31
+msgid "Active"
+msgstr "Aktív"
+
+#: babybuddy/templates/babybuddy/user_list.html:23
+#: core/templates/core/bmi_list.html:24 core/templates/core/bmi_list.html:38
+#: core/templates/core/child_list.html:28
+#: core/templates/core/child_list.html:48
+#: core/templates/core/diaperchange_list.html:24
+#: core/templates/core/diaperchange_list.html:40
+#: core/templates/core/feeding_list.html:24
+#: core/templates/core/feeding_list.html:43
+#: core/templates/core/head_circumference_list.html:24
+#: core/templates/core/head_circumference_list.html:38
+#: core/templates/core/height_list.html:24
+#: core/templates/core/height_list.html:38
+#: core/templates/core/note_list.html:24 core/templates/core/note_list.html:37
+#: core/templates/core/pumping_list.html:24
+#: core/templates/core/pumping_list.html:37
+#: core/templates/core/sleep_list.html:24
+#: core/templates/core/sleep_list.html:40
+#: core/templates/core/temperature_list.html:24
+#: core/templates/core/temperature_list.html:38
+#: core/templates/core/tummytime_list.html:23
+#: core/templates/core/tummytime_list.html:38
+#: core/templates/core/weight_list.html:24
+#: core/templates/core/weight_list.html:38
+msgid "Actions"
+msgstr "Tennivalók"
+
+#: babybuddy/templates/babybuddy/user_list.html:55
+msgid "No users found."
+msgstr "Nincs felhasználó."
+
+#: babybuddy/templates/babybuddy/user_password_form.html:4
+#: babybuddy/templates/babybuddy/user_password_form.html:8
+#: babybuddy/templates/babybuddy/user_password_form.html:12
+msgid "Change Password"
+msgstr "Jelszó megváltoztatása"
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:4
+#: babybuddy/templates/babybuddy/user_settings_form.html:12
+msgid "User Settings"
+msgstr "Felhasználói beállítások"
+
+#: babybuddy/templates/babybuddy/messages.html:23
+#: babybuddy/templates/babybuddy/user_settings_form.html:26
+msgid "Error: Some fields have errors. See below for details."
+msgstr "Hiba: Néhány mező hibás. Részletek lentebb."
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:33
+msgid "User Profile"
+msgstr "Felhasználói profil"
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:79
+msgid "API"
+msgstr "API"
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:81
+msgid "Key"
+msgstr "API Kulcs"
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:84
+msgid "Regenerate"
+msgstr "Újragenerál"
+
+#: babybuddy/templates/babybuddy/welcome.html:4
+#: babybuddy/templates/babybuddy/welcome.html:7
+msgid "Welcome!"
+msgstr "Üdvözlet!"
+
+#: babybuddy/templates/babybuddy/welcome.html:12
+msgid "Welcome to Baby Buddy!"
+msgstr "Üdvözöl a Baby Buddy!"
+
+#: babybuddy/templates/babybuddy/welcome.html:14
+msgid "Learn about and predict baby's needs without\n"
+" (as much) guess work by using Baby Buddy to track —"
+msgstr "Használd a Baby Buddy-t az adatok rögzítésére, így megismereheted és akár előrejelezheted kisbabád szükségleteit találgatás nélkül (legalábbis talán nem olyan nagyon sok találgatással)"
+
+#: babybuddy/templates/babybuddy/welcome.html:26 core/models.py:249
+#: core/templates/core/diaperchange_confirm_delete.html:7
+#: core/templates/core/diaperchange_form.html:13
+#: core/templates/core/diaperchange_list.html:4
+#: core/templates/core/diaperchange_list.html:7
+#: core/templates/core/diaperchange_list.html:12
+#: dashboard/templates/cards/diaperchange_types.html:6
+msgid "Diaper Changes"
+msgstr "Pelenkacserék"
+
+#: babybuddy/templates/babybuddy/welcome.html:54
+msgid "As the amount of entries grows, Baby Buddy will help\n"
+" parents and caregivers to identify small patterns in baby's habits\n"
+" using the dashboard and graphs. Baby Buddy is mobile-friendly and\n"
+" uses a dark theme to help weary moms and dads with 2AM feedings and\n"
+" changings. To get started, just click the button below to add your\n"
+" first (or second, third, etc.) child!"
+msgstr "Ahogy a bevitt adatok mennyisége növekszik, a Baby Buddy \n"
+"segíthet a szülőknek felismerni a mintázatokat a kisbaba viselkedésében\n"
+"a vezérlőpult és a grafikonok segítségével. A Baby Buddy mobiltelefon-barát\n"
+"és sötét témát használ, hogy a kialvatlan anyukák és apukák szemét kímélje\n"
+"hajnalban az etetés és pelenkacsere közben. A kezdéshez kattints a lenti\n"
+"gombra és add hozzá első (vagy második, harmadik, stb.) gyermeked!"
+
+#: babybuddy/templates/babybuddy/welcome.html:68
+#: core/templates/core/child_form.html:8 core/templates/core/child_form.html:18
+#: core/templates/core/child_form.html:28
+msgid "Add a Child"
+msgstr "Gyermek hozzáadása"
+
+#: babybuddy/templates/registration/login.html:32
+msgid "Login"
+msgstr "Bejelentkezés"
+
+#: babybuddy/templates/registration/login.html:38
+msgid "Forgot your password?"
+msgstr "Elfelejtetted a jelszót?"
+
+#: babybuddy/templates/registration/password_reset_complete.html:4
+msgid "Password Reset Successfully!"
+msgstr "Jelszóvisszaállítás sikeres!"
+
+#: babybuddy/templates/registration/password_reset_complete.html:8
+msgid "Your password has been set. You may go ahead and log in now."
+msgstr "A jelszó beállítása megtörtént. Most már bejelentkezhetsz."
+
+#: babybuddy/templates/registration/password_reset_complete.html:9
+msgid "Log in"
+msgstr "Bejelentkezés"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:4
+msgid "Password Reset"
+msgstr "Jelszóvisszaállítás"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:12
+msgid "Oh snap! The\n"
+" two passwords did not match. Please try again.
"
+msgstr "Ajjaj! A két jelszó\n"
+" nem egyezik. Próbáld újra.
"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:22
+msgid "Enter your new password in each field below."
+msgstr "Írd be mindkét mezőbe az új jelszavad."
+
+#: babybuddy/templates/registration/password_reset_confirm.html:46
+#: babybuddy/templates/registration/password_reset_form.html:31
+msgid "Reset Password"
+msgstr "Jelszó viszaállítása"
+
+#: babybuddy/templates/registration/password_reset_done.html:4
+msgid "Reset Email Sent"
+msgstr "Jelszóvisszaállító email elküldve"
+
+#: babybuddy/templates/registration/password_reset_done.html:8
+msgid "We've emailed you instructions for setting your\n"
+" password, if an account exists with the email you entered. You\n"
+" should receive them shortly.
\n"
+" If you don't receive an email, please make sure you've\n"
+" entered the address you registered with, and check your spam\n"
+" folder.
"
+msgstr "Emailben elküldtük az új jelszó beállításához szükséges\n"
+" információkat. Amennyiben létezik ilyen fiók, hamarosan meg kell érkezzen.
\n"
+" Ha az email nem érkezett meg, ellenőrizd, hogy megfelelő címet adtál-e meg, és ellenőrizd a spam mappát is.
"
+
+#: babybuddy/templates/registration/password_reset_form.html:4
+msgid "Forgot Password"
+msgstr "Elfelejtett jelszó"
+
+#: babybuddy/templates/registration/password_reset_form.html:8
+msgid "Enter your account email address in the\n"
+" form below. If the address is valid, you will receive instructions for\n"
+" resetting your password.
"
+msgstr "Írd be a regisztációkor használt email címet, és ha az létezik az adatbázisban, küldünk egy emailt az instrukciókkal.
"
+
+#: babybuddy/views.py:102
+msgid "User %(username)s added!"
+msgstr "%(username)s nevű felhasználót hozzáadtuk!"
+
+#: babybuddy/views.py:113
+msgid "User %(username)s updated."
+msgstr "%(username)s nevű felhasználót frissítettük."
+
+#: babybuddy/views.py:125
+msgid "User {user} deleted."
+msgstr "{user} nevű felhasználót töröltük."
+
+#: babybuddy/views.py:146
+msgid "Password updated."
+msgstr "Jelszó frissítve."
+
+#: babybuddy/views.py:175
+msgid "User API key regenerated."
+msgstr "Az API kulcsot újrageneráltuk."
+
+#: babybuddy/views.py:188
+msgid "Settings saved!"
+msgstr "Beállítások elmentve!"
+
+#: core/forms.py:120
+msgid "Name does not match child name."
+msgstr "A név nem felel meg egyik gyermek nevének sem."
+
+#: core/models.py:28
+msgid "Date can not be in the future."
+msgstr "A dátum nem lehet a jövőben."
+
+#: core/models.py:42
+msgid "Start time must come before end time."
+msgstr "A kezdésnek meg kell előznie a végét."
+
+#: core/models.py:45
+msgid "Duration too long."
+msgstr "Túl hosszú időtartam."
+
+#: core/models.py:61
+msgid "Another entry intersects the specified time period."
+msgstr "Egy másik bejegyzés átfed a megadott időtartammal."
+
+#: core/models.py:75
+msgid "Date/time can not be in the future."
+msgstr "A dátum és idő nem lehet a jövőben."
+
+#: core/models.py:163
+msgid "First name"
+msgstr "Keresztnév"
+
+#: core/models.py:165
+msgid "Last name"
+msgstr "Vezetéknév"
+
+#: core/models.py:167
+msgid "Birth date"
+msgstr "Születési idő"
+
+#: core/models.py:174
+msgid "Slug"
+msgstr "slug"
+
+#: core/models.py:177
+msgid "Picture"
+msgstr "Fénykép"
+
+#: core/models.py:224 core/models.py:398 core/models.py:429 core/models.py:509
+#: core/templates/core/diaperchange_list.html:25
+#: core/templates/core/note_list.html:25
+#: core/templates/core/pumping_list.html:25
+#: core/templates/core/temperature_list.html:25
+msgid "Time"
+msgstr "Idő"
+
+#: core/models.py:226 core/templates/core/diaperchange_list.html:61
+#: reports/graphs/diaperchange_types.py:36
+msgid "Wet"
+msgstr "Pisis"
+
+#: core/models.py:227 core/templates/core/diaperchange_list.html:62
+#: reports/graphs/diaperchange_types.py:30
+msgid "Solid"
+msgstr "Kakis"
+
+#: core/models.py:231
+msgid "Black"
+msgstr "Fekete"
+
+#: core/models.py:232
+msgid "Brown"
+msgstr "Barna"
+
+#: core/models.py:233
+msgid "Green"
+msgstr "Zöld"
+
+#: core/models.py:234
+msgid "Yellow"
+msgstr "Sárga"
+
+#: core/models.py:84 core/models.py:237
+#: core/templates/core/diaperchange_list.html:30
+msgid "Color"
+msgstr "Szín"
+
+#: core/models.py:180
+msgid "Wet and/or solid is required."
+msgstr "Add meg, hogy pisis és/vagy kakis."
+
+#: core/models.py:276 core/models.py:453 core/models.py:543 core/models.py:632
+msgid "Start time"
+msgstr "Kezdési idő"
+
+#: core/models.py:277 core/models.py:454 core/models.py:546 core/models.py:633
+msgid "End time"
+msgstr "Befejezési idő"
+
+#: core/models.py:279 core/models.py:456 core/models.py:549 core/models.py:635
+#: core/templates/core/feeding_list.html:34
+#: core/templates/core/sleep_list.html:30
+#: core/templates/core/timer_list.html:29
+#: core/templates/core/tummytime_list.html:29
+msgid "Duration"
+msgstr "Időtartam"
+
+#: core/models.py:283
+msgid "Breast milk"
+msgstr "Anyatej"
+
+#: core/models.py:284
+msgid "Formula"
+msgstr "Tápszer"
+
+#: core/models.py:289 core/templates/core/feeding_list.html:30
+msgid "Type"
+msgstr "Típus"
+
+#: core/models.py:293
+msgid "Bottle"
+msgstr "Cumisüveg"
+
+#: core/models.py:294
+msgid "Left breast"
+msgstr "Bal mell"
+
+#: core/models.py:295
+msgid "Right breast"
+msgstr "Jobb mell"
+
+#: core/models.py:301 core/templates/core/feeding_list.html:29
+msgid "Method"
+msgstr "Bevitel módja"
+
+#: core/models.py:239 core/models.py:303 core/models.py:428
+#: core/templates/core/diaperchange_list.html:31
+#: core/templates/core/pumping_list.html:29
+msgid "Amount"
+msgstr "Mennyiség"
+
+#: core/models.py:243
+msgid "Only \"Bottle\" method is allowed with \"Formula\" type."
+msgstr "A \"Tápszer\" típussal csak a \"Cumisüveg\" megengedett."
+
+#: core/models.py:540 core/templates/core/timer_list.html:25
+msgid "Name"
+msgstr "Név"
+
+#: core/models.py:564 core/templates/core/timer_form.html:4
+msgid "Timer"
+msgstr "Stopper"
+
+#: core/models.py:565 core/templates/core/timer_confirm_delete.html:9
+#: core/templates/core/timer_confirm_delete_inactive.html:9
+#: core/templates/core/timer_detail.html:8
+#: core/templates/core/timer_form.html:7 core/templates/core/timer_list.html:4
+#: core/templates/core/timer_list.html:7 core/templates/core/timer_list.html:12
+#: core/templates/core/timer_nav.html:10
+msgid "Timers"
+msgstr "Stopperek"
+
+#: core/models.py:568
+msgid "Timer #{id}"
+msgstr "#{id}. stopper"
+
+#: core/models.py:638 core/templates/core/tummytime_list.html:30
+msgid "Milestone"
+msgstr "Mérföldkő"
+
+#: core/models.py:141 core/models.py:341 core/models.py:371 core/models.py:675
+#: core/templates/core/bmi_list.html:25
+#: core/templates/core/feeding_list.html:25
+#: core/templates/core/head_circumference_list.html:25
+#: core/templates/core/height_list.html:25
+#: core/templates/core/weight_list.html:25 reports/graphs/bmi_change.py:28
+#: reports/graphs/diaperchange_amounts.py:37
+#: reports/graphs/diaperchange_types.py:49 reports/graphs/feeding_amounts.py:70
+#: reports/graphs/feeding_duration.py:56
+#: reports/graphs/head_circumference_change.py:28
+#: reports/graphs/height_change.py:28 reports/graphs/pumping_amounts.py:58
+#: reports/graphs/sleep_pattern.py:151 reports/graphs/sleep_totals.py:59
+#: reports/graphs/tummytime_duration.py:51 reports/graphs/weight_change.py:28
+msgid "Date"
+msgstr "Dátum"
+
+#: core/templates/core/child_confirm_delete.html:4
+msgid "Delete a Child"
+msgstr "Gyermek törlése"
+
+#: core/templates/core/child_confirm_delete.html:20
+msgid "To confirm this action. Type the full name of the child below."
+msgstr "A megerősítéshez írd be a gyermek nevét."
+
+#: core/templates/core/child_detail.html:23
+#: dashboard/templates/dashboard/dashboard.html:32
+msgid "Born"
+msgstr "Született"
+
+#: core/templates/core/child_detail.html:24
+#: dashboard/templates/dashboard/dashboard.html:33
+msgid "Age"
+msgstr "Életkor"
+
+#: core/templates/timeline/_timeline.html:38
+msgid "%(since)s ago (%(time)s)"
+msgstr "%(since)s-vel ezelőtt (%(time)s)"
+
+#: core/templates/core/child_list.html:27
+msgid "Birth Date"
+msgstr "Születési idő"
+
+#: core/templates/core/child_list.html:67
+msgid "No children found."
+msgstr "Nem található gyermek."
+
+#: core/templates/core/diaperchange_confirm_delete.html:4
+msgid "Delete a Diaper Change"
+msgstr "Pelenkacsere törlése"
+
+#: core/templates/core/diaperchange_form.html:6
+msgid "Update a Diaper Change"
+msgstr "Pelenkacsere javítása"
+
+#: core/templates/core/diaperchange_form.html:8
+#: core/templates/core/diaperchange_form.html:27
+msgid "Add a Diaper Change"
+msgstr "Pelenkacsere hozzáadása"
+
+#: core/templates/core/diaperchange_form.html:17
+#: core/templates/core/feeding_form.html:17
+#: core/templates/core/note_form.html:17 core/templates/core/sleep_form.html:17
+#: core/templates/core/tummytime_form.html:17
+#: core/templates/core/widget_tag_editor.html:24
+msgid "Add"
+msgstr "Hozzáad"
+
+#: core/templates/core/diaperchange_list.html:77
+msgid "No diaper changes found."
+msgstr "Nem található pelenkacsere."
+
+#: core/templates/core/diaperchange_list.html:63
+msgid "Add a Change"
+msgstr "Pelenkacsere hozzáadása"
+
+#: core/templates/core/feeding_confirm_delete.html:4
+msgid "Delete a Feeding"
+msgstr "Etetés törlése"
+
+#: core/templates/core/feeding_form.html:6
+msgid "Update a Feeding"
+msgstr "Etetés javítása"
+
+#: core/templates/core/feeding_form.html:8
+#: core/templates/core/feeding_form.html:27
+msgid "Add a Feeding"
+msgstr "Etetés hozzáadása"
+
+#: core/templates/core/feeding_list.html:33
+msgid "Amt."
+msgstr "Menny."
+
+#: core/templates/core/feeding_list.html:82
+msgid "No feedings found."
+msgstr "Nem található etetés."
+
+#: core/templates/core/note_confirm_delete.html:4
+msgid "Delete a Note"
+msgstr "Megjegyzés törlése"
+
+#: core/templates/core/note_form.html:6
+msgid "Update a Note"
+msgstr "Megjegyzés javítása"
+
+#: core/templates/core/note_form.html:8 core/templates/core/note_form.html:27
+msgid "Add a Note"
+msgstr "Megjegyzés hozzáadása"
+
+#: core/templates/core/note_list.html:64
+msgid "No notes found."
+msgstr "Nem található megjegyzés."
+
+#: core/templates/core/sleep_confirm_delete.html:4
+msgid "Delete a Sleep Entry"
+msgstr "Alvás bejegyzés törlése"
+
+#: core/templates/core/sleep_form.html:6
+msgid "Update a Sleep Entry"
+msgstr "Alvás bejegyzés javítása"
+
+#: core/templates/core/sleep_form.html:8 core/templates/core/sleep_form.html:27
+msgid "Add a Sleep Entry"
+msgstr "Alvás bejegyzés hozzáadása"
+
+#: core/templates/core/sleep_list.html:25
+#: core/templates/core/timer_form.html:12
+#: core/templates/core/timer_list.html:24
+#: core/templates/core/tummytime_list.html:24
+msgid "Start"
+msgstr "Kezdés"
+
+#: core/templates/core/sleep_list.html:26
+#: core/templates/core/timer_list.html:30
+#: core/templates/core/tummytime_list.html:25
+msgid "End"
+msgstr "Befejezés"
+
+#: core/templates/core/sleep_list.html:31
+msgid "Nap"
+msgstr "Szundi"
+
+#: core/templates/core/sleep_list.html:74
+msgid "No sleep entries found."
+msgstr "Nem található alvás bejegyzés."
+
+#: core/templates/core/timer_confirm_delete.html:5
+msgid "Delete %(object)s"
+msgstr "%(object)s törlése"
+
+#: core/templates/core/timer_detail.html:28
+msgid "Started"
+msgstr "Elkezdve"
+
+#: core/templates/core/timer_detail.html:30
+msgid "Stopped"
+msgstr "Befejezve"
+
+#: core/templates/core/timer_detail.html:26
+msgid "%(timer)s created by %(object.user)s"
+msgstr "%(object.user)s elindította a(z) %(timer)s stoppert"
+
+#: core/templates/core/timer_detail.html:63
+msgid "Timer actions"
+msgstr "Stopperbeállítások"
+
+#: core/templates/core/timer_form.html:22
+#: core/templates/core/timer_list.html:15 core/templates/core/timer_nav.html:23
+msgid "Start Timer"
+msgstr "Stopper indítása"
+
+#: core/templates/core/timer_list.html:58
+msgid "No timer entries found."
+msgstr "Nem található stopper."
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:32
+#: core/templates/core/timer_nav.html:18
+msgid "Quick Start Timer"
+msgstr "Stopper gyors indítása"
+
+#: core/templates/core/timer_nav.html:28
+msgid "View Timers"
+msgstr "Stopperek megtekintése"
+
+#: core/templates/core/timer_nav.html:32
+#: dashboard/templates/cards/timer_list.html:6
+msgid "Active Timers"
+msgstr "Aktív stopperek"
+
+#: core/templates/core/timer_nav.html:38
+#: dashboard/templates/cards/diaperchange_last.html:17
+#: dashboard/templates/cards/diaperchange_types.html:12
+#: dashboard/templates/cards/feeding_day.html:20
+#: dashboard/templates/cards/feeding_day.html:52
+#: dashboard/templates/cards/feeding_last.html:17
+#: dashboard/templates/cards/feeding_last_method.html:43
+#: dashboard/templates/cards/sleep_day.html:14
+#: dashboard/templates/cards/sleep_last.html:17
+#: dashboard/templates/cards/sleep_naps_day.html:18
+#: dashboard/templates/cards/tummytime_day.html:14
+msgid "None"
+msgstr "Nincs"
+
+#: core/templates/core/tummytime_confirm_delete.html:4
+msgid "Delete a Tummy Time Entry"
+msgstr "Pocakidő bejegyzés törlése"
+
+#: core/templates/core/tummytime_form.html:6
+msgid "Update a Tummy Time Entry"
+msgstr "Pocakidő bejegyzés javítása"
+
+#: core/templates/core/tummytime_form.html:8
+#: core/templates/core/tummytime_form.html:27
+msgid "Add a Tummy Time Entry"
+msgstr "Pocakidő bejegyzés hozzáadása"
+
+#: core/templates/core/tummytime_list.html:67
+msgid "No tummy time entries found."
+msgstr "Nem található pocakidő bejegyzés."
+
+#: core/templates/core/weight_confirm_delete.html:4
+msgid "Delete a Weight Entry"
+msgstr "Testtömeg bejegyzés törlése"
+
+#: core/templates/core/weight_form.html:8
+#: core/templates/core/weight_form.html:17
+#: core/templates/core/weight_form.html:27
+msgid "Add a Weight Entry"
+msgstr "Testtömeg bejegyzés hozzáadása"
+
+#: core/templates/core/weight_list.html:70
+msgid "No weight entries found."
+msgstr "Nem található testtömeg adat."
+
+#: core/timeline.py:164
+msgid "%(child)s had a diaper change."
+msgstr "%(child)s pelenkája ki lett cserélve."
+
+#: core/timeline.py:145
+msgid "%(child)s started feeding."
+msgstr "%(child)s elkezdett enni."
+
+#: core/timeline.py:158
+msgid "%(child)s finished feeding."
+msgstr "%(child)s befejezte az evést."
+
+#: core/timeline.py:91
+msgid "%(child)s fell asleep."
+msgstr "%(child)s elaludt."
+
+#: core/timeline.py:103
+msgid "%(child)s woke up."
+msgstr "%(child)s felébredt."
+
+#: core/timeline.py:53
+msgid "%(child)s started tummy time!"
+msgstr "%(child)s pocakra lett téve!"
+
+#: core/timeline.py:65
+msgid "%(child)s finished tummy time."
+msgstr "%(child)s befejezte a pocakidőt."
+
+#: core/views.py:33
+msgid "%(model)s entry for %(child)s added!"
+msgstr "%(child)s %(model)s bejegyzése hozzáadva!"
+
+#: core/views.py:35 core/views.py:308
+msgid "%(model)s entry added!"
+msgstr "%(model)s bejegyzés hozzáadva!"
+
+#: core/views.py:61 core/views.py:316
+msgid "%(model)s entry for %(child)s updated."
+msgstr "%(child)s %(model)s bejegyzése frissítve."
+
+#: core/views.py:63
+msgid "%(model)s entry updated."
+msgstr "%(model)s bejegyzés frissítve."
+
+#: core/views.py:115
+msgid "%(first_name)s %(last_name)s added!"
+msgstr "%(last_name)s %(first_name)s-t hozzáadva!"
+
+#: core/views.py:478
+msgid "%(timer)s stopped."
+msgstr "A(z) %(timer)s stopper megállt."
+
+#: dashboard/templates/cards/diaperchange_last.html:6
+msgid "Last Diaper Change"
+msgstr "Utolsó pelenkacsere"
+
+#: dashboard/templates/cards/diaperchange_last.html:8
+#: dashboard/templates/cards/feeding_last.html:8
+#: dashboard/templates/cards/sleep_last.html:8
+#: dashboard/templates/cards/tummytime_last.html:8
+msgid "%(time)s ago"
+msgstr "%(time)s ezelőtt"
+
+#: dashboard/templates/cards/tummytime_last.html:18
+msgid "Never"
+msgstr "Soha"
+
+#: dashboard/templates/cards/diaperchange_types.html:14
+msgid "Past Week"
+msgstr "Elmúlt hét"
+
+#: dashboard/templates/cards/diaperchange_types.html:27
+msgid "wet"
+msgstr "pisis"
+
+#: dashboard/templates/cards/diaperchange_types.html:35
+msgid "solid"
+msgstr "kakis"
+
+#: dashboard/templates/cards/diaperchange_types.html:49
+msgid "today"
+msgstr "ma"
+
+#: dashboard/templates/cards/diaperchange_types.html:51
+msgid "yesterday"
+msgstr "tegnap"
+
+#: dashboard/templates/cards/diaperchange_types.html:53
+msgid "%(key)s days ago"
+msgstr "%(key)s nappal ezelőtt"
+
+#: dashboard/templates/cards/feeding_last.html:6
+msgid "Last Feeding"
+msgstr "Utolsó etetés"
+
+#: dashboard/templates/cards/feeding_last_method.html:6
+msgid "Last Feeding Method"
+msgstr "Utolsó etetési mód"
+
+#: dashboard/templates/cards/sleep_day.html:6
+msgid "Today's Sleep"
+msgstr "Mai alvás"
+
+#: dashboard/templates/cards/sleep_day.html:11
+#: dashboard/templates/cards/sleep_naps_day.html:13
+#: dashboard/templates/cards/tummytime_day.html:11
+msgid "None yet today"
+msgstr "Ma még nem volt"
+
+#: dashboard/templates/cards/sleep_day.html:20
+msgid "%(count)s sleep entries"
+msgstr "%(count)s alvási bejegyzés"
+
+#: dashboard/templates/cards/sleep_last.html:4
+msgid "Last Slept"
+msgstr "Utolsó alvás"
+
+#: dashboard/templates/cards/sleep_naps_day.html:6
+msgid "Today's Naps"
+msgstr "Mai szundik"
+
+#: dashboard/templates/cards/sleep_naps_day.html:12
+msgid "%(count)s nap%(plural)s"
+msgstr "%(count)s szundi"
+
+#: dashboard/templates/cards/statistics.html:7
+msgid "Statistics"
+msgstr "Statisztika"
+
+#: dashboard/templates/cards/statistics.html:25
+msgid "Not enough data"
+msgstr "Nincs elég adatpont"
+
+#: dashboard/templates/cards/timer_list.html:12
+msgid "%(count)s active timer%(plural)s"
+msgstr "%(count)s aktív stopper"
+
+#: dashboard/templates/cards/timer_list.html:19
+msgid "Started by %(instance.user)s at %(start)s"
+msgstr "Indította %(instance.user)s %(start)s-kor"
+
+#: dashboard/templates/cards/tummytime_day.html:6
+msgid "Today's Tummy Time"
+msgstr "Mai pocakidő"
+
+#: dashboard/templates/cards/tummytime_day.html:22
+msgid "%(duration)s at %(end)s"
+msgstr "%(duration)s %(end)s-kor"
+
+#: dashboard/templates/cards/tummytime_last.html:6
+msgid "Last Tummy Time"
+msgstr "Utolsó pocakidő"
+
+#: dashboard/templates/dashboard/child_button_group.html:3
+msgid "Child actions"
+msgstr "Műveletek a gyermekkel"
+
+#: reports/templates/reports/diaperchange_types.html:4
+#: reports/templates/reports/diaperchange_types.html:8
+#: reports/templates/reports/report_list.html:12
+msgid "Diaper Change Types"
+msgstr "Elhasznált pelenkák típusa"
+
+#: reports/templates/reports/diaperchange_lifetimes.html:4
+#: reports/templates/reports/diaperchange_lifetimes.html:8
+#: reports/templates/reports/report_list.html:13
+msgid "Diaper Lifetimes"
+msgstr "Pelenka élettartama"
+
+#: reports/templates/reports/report_list.html:15
+msgid "Feeding Durations (Average)"
+msgstr "Etetési idők (átlagos)"
+
+#: reports/templates/reports/report_list.html:19
+#: reports/templates/reports/sleep_pattern.html:4
+#: reports/templates/reports/sleep_pattern.html:8
+msgid "Sleep Pattern"
+msgstr "Alvási minta"
+
+#: reports/templates/reports/report_list.html:20
+#: reports/templates/reports/sleep_totals.html:4
+#: reports/templates/reports/sleep_totals.html:8
+msgid "Sleep Totals"
+msgstr "Összes alvás"
+
+#: dashboard/templatetags/cards.py:420
+msgid "Diaper change frequency"
+msgstr "Pelenkacsere gyakoriság"
+
+#: dashboard/templatetags/cards.py:466
+msgid "Feeding frequency"
+msgstr "Etetési gyakoriság"
+
+#: dashboard/templatetags/cards.py:328
+msgid "Average nap duration"
+msgstr "Átlagos szundi időtartam"
+
+#: dashboard/templatetags/cards.py:335
+msgid "Average naps per day"
+msgstr "Átlagos napi szundi szám"
+
+#: dashboard/templatetags/cards.py:345
+msgid "Average sleep duration"
+msgstr "Átlagos alvási időtartam"
+
+#: dashboard/templatetags/cards.py:352
+msgid "Average awake duration"
+msgstr "Átlagos ébren töltött idő"
+
+#: dashboard/templatetags/cards.py:362
+msgid "Weight change per week"
+msgstr "Heti tömegnövekedés"
+
+#: reports/graphs/diaperchange_lifetimes.py:35
+msgid "Diaper Lifetimes"
+msgstr "Pelenka élettartam"
+
+#: reports/graphs/diaperchange_lifetimes.py:36
+msgid "Time between changes (hours)"
+msgstr "Idő két csere között (óra)"
+
+#: reports/graphs/diaperchange_types.py:41 reports/graphs/feeding_amounts.py:58
+msgid "Total"
+msgstr "Összesen"
+
+#: reports/graphs/diaperchange_types.py:48
+msgid "Diaper Change Types"
+msgstr "Elhasznált pelenkák típusa"
+
+#: reports/graphs/diaperchange_types.py:51
+msgid "Number of changes"
+msgstr "Cserék száma"
+
+#: reports/graphs/feeding_duration.py:38
+msgid "Average duration"
+msgstr "Átlagos időtartam"
+
+#: reports/graphs/feeding_duration.py:46
+msgid "Total feedings"
+msgstr "Összes etetés"
+
+#: reports/graphs/feeding_duration.py:55
+msgid "Average Feeding Durations"
+msgstr "Átlagos etetési időtartam"
+
+#: reports/graphs/feeding_duration.py:58
+msgid "Average duration (minutes)"
+msgstr "Átlagos időtartam (perc)"
+
+#: reports/graphs/feeding_duration.py:60
+msgid "Number of feedings"
+msgstr "Etetések száma"
+
+#: reports/graphs/sleep_pattern.py:148
+msgid "Sleep Pattern"
+msgstr "Alvási minta"
+
+#: reports/graphs/sleep_pattern.py:165
+msgid "Time of day"
+msgstr "Napszak"
+
+#: reports/graphs/sleep_totals.py:48
+msgid "Total sleep"
+msgstr "Összes alvás"
+
+#: reports/graphs/sleep_totals.py:58
+msgid "Sleep Totals"
+msgstr "Összes alvás"
+
+#: reports/graphs/sleep_totals.py:61
+msgid "Hours of sleep"
+msgstr "Alvással töltött órák"
+
+#: reports/graphs/weight_change.py:27
+msgid "Weight"
+msgstr "Testtömeg"
+
+#: reports/templates/reports/feeding_duration.html:4
+#: reports/templates/reports/feeding_duration.html:8
+msgid "Average Feeding Durations"
+msgstr "Átlagos etetési időtartam"
+
+#: dashboard/templates/dashboard/child_button_group.html:12
+#: reports/templates/reports/base.html:9
+#: reports/templates/reports/report_list.html:4
+msgid "Reports"
+msgstr "Összesítők"
+
+#: reports/templates/reports/report_base.html:19
+msgid "There is no enough data to generate this report."
+msgstr "Nincs elég adatpont az összesítéshez."
+
+#: core/models.py:296
+msgid "Both breasts"
+msgstr "Mindkét mell"
+
+#: babybuddy/settings/base.py:173
+msgid "German"
+msgstr "Német"
+
+#: babybuddy/settings/base.py:177
+msgid "Spanish"
+msgstr "Spanyol"
+
+#: babybuddy/settings/base.py:178
+msgid "Swedish"
+msgstr "Svéd"
+
+#: babybuddy/settings/base.py:179
+msgid "Turkish"
+msgstr "Török"
+
+#: babybuddy/templates/error/403.html:9
+msgid "You do not have permission to access this resource. Contact a site administrator for assistance."
+msgstr "Nincs hozzáférése az erőforráshoz. Keresse meg a rendszergazdát."
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:75
+#: babybuddy/templates/babybuddy/nav-dropdown.html:179 core/models.py:506
+#: core/models.py:519 core/models.py:520 core/models.py:523
+#: core/templates/core/temperature_confirm_delete.html:7
+#: core/templates/core/temperature_form.html:13
+#: core/templates/core/temperature_list.html:4
+#: core/templates/core/temperature_list.html:7
+#: core/templates/core/temperature_list.html:12
+#: core/templates/core/temperature_list.html:29
+msgid "Temperature"
+msgstr "Testhőmérséklet"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:185
+msgid "Temperature reading"
+msgstr "Testhőmérséklet bevitele"
+
+#: babybuddy/templates/babybuddy/welcome.html:14
+msgid "Learn about and predict baby's needs without (as much) guess work by using Baby Buddy to track —"
+msgstr "Használd a Baby Buddy-t az adatok rögzítésére, így megismereheted és akár előrejelezheted kisbabád szükségleteit találgatás nélkül (legalábbis talán nem olyan nagyon sok találgatással)"
+
+#: babybuddy/templates/babybuddy/welcome.html:56
+msgid "As the amount of entries grows, Baby Buddy will help parents and caregivers to identify small patterns in baby's habits using the dashboard and graphs. Baby Buddy is mobile-friendly and uses a dark theme to help weary moms and dads with 2AM feedings and changings. To get started, just click the button below to add your first (or second, third, etc.) child!"
+msgstr "Ahogy a bevitt adatok mennyisége növekszik, a Baby Buddy \n"
+"segíthet a szülőknek felismerni a mintázatokat a kisbaba viselkedésében\n"
+"a vezérlőpult és a grafikonok segítségével. A Baby Buddy mobiltelefon-barát\n"
+"és sötét témát használ, hogy a kialvatlan anyukák és apukák szemét kímélje\n"
+"hajnalban az etetés és pelenkacsere közben. A kezdéshez kattints a lenti\n"
+"gombra és add hozzá első (vagy második, harmadik, stb.) gyermeked!"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:13
+msgid "Oh snap! The two passwords did not match. Please try again."
+msgstr "Ajjaj! A két jelszó nem egyezik. Próbáld újra."
+
+#: babybuddy/templates/registration/password_reset_done.html:9
+msgid "We've emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly."
+msgstr "Emailben elküldtük az új jelszó beállításához szükséges információkat. Amennyiben létezik ilyen fiók, hamarosan meg kell érkezzen."
+
+#: babybuddy/templates/registration/password_reset_done.html:15
+msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder."
+msgstr "Ha az email nem érkezett meg, ellenőrizd, hogy megfelelő címet adtál-e meg, és ellenőrizd a spam mappát is."
+
+#: babybuddy/templates/registration/password_reset_form.html:9
+msgid "Enter your account email address in the form below. If the address is valid, you will receive instructions for resetting your password."
+msgstr "Írd be a regisztációkor használt email címet. Amennyiben létezik az adatbázisban, küldönk egy emailt az instrukciókkal."
+
+#: core/models.py:285
+msgid "Fortified breast milk"
+msgstr "Tápszeres anyatej"
+
+#: core/templates/core/temperature_confirm_delete.html:4
+msgid "Delete a Temperature Reading"
+msgstr "Testhőmérséklet törlése"
+
+#: core/templates/core/temperature_form.html:8
+#: core/templates/core/temperature_form.html:17
+msgid "Add a Temperature Reading"
+msgstr "Testhőmérséklet hozzáadása"
+
+#: core/templates/core/temperature_form.html:27
+msgid "Add a Temperature Entry"
+msgstr "Testhőmérséklet bejegyzés hozzáadása"
+
+#: core/templates/core/temperature_list.html:70
+msgid "No temperature entries found."
+msgstr "Nem található testhőmérsékleti adat."
+
+#: core/templates/core/timer_detail.html:34
+msgid "%(timer)s created by %(user)s"
+msgstr "%(timer)s létrehozta %(user)s"
+
+#: core/utils.py:40
+msgid "%(hours)s hour"
+msgid_plural "%(hours)s hours"
+msgstr[0] "%(hours)s óra"
+msgstr[1] "%(hours)s óra"
+
+#: core/utils.py:44
+msgid "%(minutes)s minute"
+msgid_plural "%(minutes)s minutes"
+msgstr[0] "%(minutes)s perc"
+msgstr[1] "%(minutes)s perc"
+
+#: core/utils.py:50
+msgid "%(seconds)s second"
+msgid_plural "%(seconds)s seconds"
+msgstr[0] "%(seconds)s másodperc"
+msgstr[1] "%(seconds)s másodperc"
+
+#: core/views.py:69 core/views.py:146
+msgid "%(model)s entry deleted."
+msgstr "%(model)s bejegyzés törölve."
+
+#: core/views.py:366
+msgid "%(model)s reading added!"
+msgstr "%(model)s mérés hozzáadva!"
+
+#: core/views.py:374
+msgid "%(model)s reading for %(child)s updated."
+msgstr "%(child)s %(model)s mérése frissítve."
+
+#: dashboard/templates/cards/timer_list.html:27
+msgid "Started by %(user)s at %(start)s"
+msgstr "%(user)s indította %(start)s-kor"
+
+#: reports/templates/reports/feeding_amounts.html:4
+#: reports/templates/reports/feeding_amounts.html:8
+#: reports/templates/reports/report_list.html:14
+msgid "Feeding Amounts"
+msgstr "Etetési mennyiségek"
+
+#: reports/graphs/feeding_amounts.py:27
+msgid "Total feeding amount"
+msgstr "Összes etetési mennyiség"
+
+#: reports/graphs/feeding_amounts.py:36
+msgid "Total Feeding Amounts"
+msgstr "Összes etetési mennyiség"
+
+#: reports/graphs/feeding_amounts.py:72
+msgid "Feeding amount"
+msgstr "Etetési mennyiság"
+
+#: reports/templates/reports/report_base.html:17
+msgid "There is not enough data to generate this report."
+msgstr "Nincs elég adatpont az összesítéshez."
+
+#: babybuddy/models.py:69
+msgid "Timezone"
+msgstr "Időzóna"
+
+#: babybuddy/templates/admin/base_site.html:4
+#: babybuddy/templates/admin/base_site.html:7
+#: babybuddy/templates/babybuddy/nav-dropdown.html:359
+msgid "Database Admin"
+msgstr "Adatbáziskezelő"
+
+#: core/templates/core/child_list.html:15
+msgid "Add Child"
+msgstr "Gyermek hozzáadása"
+
+#: core/templates/core/diaperchange_list.html:15
+msgid "Add Diaper Change"
+msgstr "Pelenkacsere hozzáadása"
+
+#: core/templates/core/feeding_list.html:15
+msgid "Add Feeding"
+msgstr "Etetés hozzáadása"
+
+#: core/templates/core/note_list.html:15
+msgid "Add Note"
+msgstr "Megjegyzés hozzáadása"
+
+#: core/templates/core/sleep_list.html:15
+msgid "Add Sleep"
+msgstr "Alvás hozzáadása"
+
+#: core/templates/core/temperature_list.html:15
+msgid "Add Temperature Reading"
+msgstr "Testhőmérséklet hozzáadása"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:5
+msgid "Delete All Inactive Timers"
+msgstr "Összes lejárt stopper törlése"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:10
+msgid "Delete Inactive"
+msgstr "Lejárt törlése"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:17
+msgid "Are you sure you want to delete %(number)s inactive timer%(plural)s?"
+msgstr "Biztosan törlöd a lejárt %(number)s stoppert?"
+
+#: core/templates/core/timer_list.html:68
+msgid "Delete Inactive Timers"
+msgstr "Lejárt stopperek törlése"
+
+#: core/templates/core/tummytime_list.html:15
+msgid "Add Tummy Time"
+msgstr "Pocakidő hozzáadása"
+
+#: core/templates/core/weight_list.html:15
+msgid "Add Weight"
+msgstr "Testtömeg hozzáadása"
+
+#: core/views.py:501
+msgid "All inactive timers deleted."
+msgstr "Összes lejárt stopper törölve."
+
+#: core/views.py:511
+msgid "No inactive timers exist."
+msgstr "Nincs lejárt stopper."
+
+#: dashboard/templates/cards/feeding_last_method.html:19
+msgid "most recent"
+msgstr "Utolsó"
+
+#: dashboard/templates/cards/feeding_last_method.html:21
+msgid "%(n)s feeding%(plural)s ago"
+msgstr "%(n)s etetéssel ezelőtt"
+
+#: dashboard/templates/cards/sleep_last.html:6
+msgid "Last Sleep"
+msgstr "Utolsó alvás"
+
+#: reports/templates/reports/report_list.html:11
+msgid "Diaper Change Amounts"
+msgstr "Pelenkacserék száma"
+
+#: reports/graphs/diaperchange_amounts.py:27
+msgid "Diaper change amount"
+msgstr "Pelenkacserék száma"
+
+#: reports/graphs/diaperchange_amounts.py:36
+msgid "Diaper Change Amounts"
+msgstr "Pelenkacserék száma"
+
+#: reports/graphs/diaperchange_amounts.py:39
+msgid "Change amount"
+msgstr "Cserék száma"
+
+#: reports/templates/reports/diaperchange_amounts.html:4
+#: reports/templates/reports/diaperchange_amounts.html:8
+msgid "Diaper Amounts"
+msgstr "Pelenkák száma"
+
+#: babybuddy/models.py:21
+msgid "If supported by browser, the dashboard will only refresh when visible, and also when receiving focus."
+msgstr "Ha a böngésző támogatja, az irányítópult csak akkor frissül, ha látható és fókuszba is kerül."
+
+#: babybuddy/models.py:40
+msgid "Hide Empty Dashboard Cards"
+msgstr "Üres irányítópult kártyák elrejtése"
+
+#: babybuddy/models.py:43
+msgid "Hide data older than"
+msgstr "Ennél régebbi adatok elrejtése"
+
+#: babybuddy/models.py:45
+msgid "This setting controls which data will be shown in the dashboard."
+msgstr "Ez a beállítás szabályozza, hogy mely adatok jelenjenek meg az irányítópulton."
+
+#: babybuddy/models.py:51
+msgid "show all data"
+msgstr "Minden adat megjelenítése"
+
+#: babybuddy/models.py:52
+msgid "1 day"
+msgstr "1 nap"
+
+#: babybuddy/models.py:53
+msgid "2 days"
+msgstr "2 nap"
+
+#: babybuddy/models.py:54
+msgid "3 days"
+msgstr "3 nap"
+
+#: babybuddy/models.py:55
+msgid "1 week"
+msgstr "1 hét"
+
+#: babybuddy/models.py:56
+msgid "4 weeks"
+msgstr "4 hét"
+
+#: babybuddy/settings/base.py:168
+msgid "Dutch"
+msgstr "Holland"
+
+#: babybuddy/settings/base.py:172
+msgid "Finnish"
+msgstr "Finn"
+
+#: babybuddy/settings/base.py:174
+msgid "Italian"
+msgstr "Olasz"
+
+#: babybuddy/settings/base.py:175
+msgid "Polish"
+msgstr "Lengyel"
+
+#: babybuddy/settings/base.py:176
+msgid "Portuguese"
+msgstr "Portugál"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:118
+#: core/templates/timeline/timeline.html:4
+#: core/templates/timeline/timeline.html:7
+#: dashboard/templates/dashboard/child_button_group.html:9
+msgid "Timeline"
+msgstr "Idővonal"
+
+#: core/models.py:286
+msgid "Solid food"
+msgstr "Szilárd étel"
+
+#: core/models.py:297
+msgid "Parent fed"
+msgstr "Szülő eteti"
+
+#: core/models.py:298
+msgid "Self fed"
+msgstr "Önetető"
+
+#: core/templates/core/diaperchange_list.html:29
+msgid "Contents"
+msgstr "Tartalom"
+
+#: core/templates/core/timer_detail.html:77
+msgid "Restart timer"
+msgstr "Időzítő újrakezdése"
+
+#: core/templates/core/timer_detail.html:84
+msgid "Delete timer"
+msgstr "Időtítő törlése"
+
+#: core/templatetags/datetime.py:60
+msgid "Today"
+msgstr "Ma"
+
+#: core/templatetags/datetime.py:75
+msgid "{}, {}"
+msgstr "{}, {}"
+
+#: core/templatetags/duration.py:25
+msgid "0 days"
+msgstr "0 nap"
+
+#: core/timeline.py:137
+msgid "Amount: %(amount).0f"
+msgstr "Mennyiség: %(amount).0f"
+
+#: core/timeline.py:157
+msgid "Contents: %(contents)s"
+msgstr "Tartalom: %(contents)s"
+
+#: dashboard/templates/cards/diaperchange_last.html:12
+#: dashboard/templates/cards/feeding_last.html:12
+#: dashboard/templates/cards/sleep_last.html:12
+#: dashboard/templates/cards/tummytime_last.html:13
+msgid "%(since)s ago
%(time)s"
+msgstr "%(since)s másodperce
%(time)s"
+
+#: dashboard/templates/cards/feeding_day.html:6
+msgid "Today's Feeding"
+msgstr "Mai evés"
+
+#: dashboard/templates/cards/feeding_day.html:20
+msgid "%(count)s feeding entries"
+msgstr "%(count)s etetési bejegyzések"
+
+#: dashboard/templates/cards/statistics.html:42
+msgid "No data yet"
+msgstr "Nincs még adat"
+
+#: reports/templates/reports/report_list.html:21
+msgid "Tummy Time Durations (Sum)"
+msgstr "Pocakidő (Összes)"
+
+#: core/templates/timeline/_timeline.html:61
+#: dashboard/templates/dashboard/child_button_group.html:20
+msgid "Edit"
+msgstr "Módosítás"
+
+#: dashboard/templatetags/cards.py:456
+msgid "Feeding frequency (past 3 days)"
+msgstr "Etetés gyakorisága (elmúlt 3 nap)"
+
+#: dashboard/templatetags/cards.py:460
+msgid "Feeding frequency (past 2 weeks)"
+msgstr "Etetés gyakorisága (elmúlt 2 hét)"
+
+#: reports/graphs/tummytime_duration.py:34
+msgid "Total duration"
+msgstr "Teljes időtartam"
+
+#: reports/graphs/tummytime_duration.py:41
+#: reports/graphs/tummytime_duration.py:55
+msgid "Number of sessions"
+msgstr "A munkamenetek száma"
+
+#: reports/graphs/tummytime_duration.py:50
+msgid "Total Tummy Time Durations"
+msgstr "Teljes pocakidő"
+
+#: reports/graphs/tummytime_duration.py:53
+msgid "Total duration (minutes)"
+msgstr "Teljes időtartam (perc)"
+
+#: reports/templates/reports/tummytime_duration.html:4
+#: reports/templates/reports/tummytime_duration.html:8
+msgid "Total Tummy Time Durations"
+msgstr "Összes pocakidő"
+
+#: babybuddy/settings/base.py:169
+msgid "English (US)"
+msgstr "Angol (US)"
+
+#: babybuddy/settings/base.py:170
+msgid "English (UK)"
+msgstr "Angol (UK)"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:171
+msgid "Measurements"
+msgstr "Méretek"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:207 core/models.py:369
+#: core/models.py:381 core/models.py:382 core/models.py:385
+#: core/templates/core/height_confirm_delete.html:7
+#: core/templates/core/height_form.html:13
+#: core/templates/core/height_list.html:4
+#: core/templates/core/height_list.html:7
+#: core/templates/core/height_list.html:12
+#: core/templates/core/height_list.html:29 reports/graphs/height_change.py:19
+#: reports/graphs/height_change.py:30
+#: reports/templates/reports/height_change.html:4
+#: reports/templates/reports/height_change.html:8
+#: reports/templates/reports/report_list.html:17
+msgid "Height"
+msgstr "Magasság"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:213
+msgid "Height entry"
+msgstr "Magasság bevitele"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:221 core/models.py:338
+#: core/models.py:351 core/models.py:352 core/models.py:355
+#: core/templates/core/head_circumference_confirm_delete.html:7
+#: core/templates/core/head_circumference_form.html:13
+#: core/templates/core/head_circumference_list.html:4
+#: core/templates/core/head_circumference_list.html:7
+#: core/templates/core/head_circumference_list.html:12
+#: core/templates/core/head_circumference_list.html:29
+#: reports/graphs/head_circumference_change.py:19
+#: reports/graphs/head_circumference_change.py:30
+#: reports/templates/reports/head_circumference_change.html:4
+#: reports/templates/reports/head_circumference_change.html:8
+#: reports/templates/reports/report_list.html:16
+msgid "Head Circumference"
+msgstr "Fejkörfogat"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:227
+msgid "Head Circumference entry"
+msgstr "Fejkörfogat bevitele"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:235 core/models.py:139
+#: core/models.py:151 core/models.py:152 core/models.py:155
+#: core/templates/core/bmi_confirm_delete.html:7
+#: core/templates/core/bmi_form.html:13 core/templates/core/bmi_list.html:4
+#: core/templates/core/bmi_list.html:7 core/templates/core/bmi_list.html:12
+#: core/templates/core/bmi_list.html:29 reports/graphs/bmi_change.py:19
+#: reports/graphs/bmi_change.py:30 reports/templates/reports/bmi_change.html:4
+#: reports/templates/reports/bmi_change.html:8
+msgid "BMI"
+msgstr "BMI"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:241
+msgid "BMI entry"
+msgstr "BMI bevitele"
+
+#: core/models.py:452
+msgid "Napping"
+msgstr "Szundi"
+
+#: core/templates/core/bmi_confirm_delete.html:4
+msgid "Delete a BMI Entry"
+msgstr "BMI bejegyzés törlése"
+
+#: core/templates/core/bmi_form.html:8 core/templates/core/bmi_form.html:17
+#: core/templates/core/bmi_form.html:27
+msgid "Add a BMI Entry"
+msgstr "BMI bejegyzés hozzáadás"
+
+#: core/templates/core/bmi_list.html:15
+msgid "Add BMI"
+msgstr "BMI hozzáadás"
+
+#: core/templates/core/bmi_list.html:70
+msgid "No bmi entries found."
+msgstr "BMI-bejegyzés nem található."
+
+#: core/templates/core/head_circumference_confirm_delete.html:4
+msgid "Delete a Head Circumference Entry"
+msgstr "Fejkörfogat bejegyzés törlése"
+
+#: core/templates/core/head_circumference_form.html:8
+#: core/templates/core/head_circumference_form.html:17
+#: core/templates/core/head_circumference_form.html:27
+msgid "Add a Head Circumference Entry"
+msgstr "Fejkörfogat bejegyzés hozzáadása"
+
+#: core/templates/core/head_circumference_list.html:15
+msgid "Add Head Circumference"
+msgstr "Fejkörfogat hozzáadása"
+
+#: core/templates/core/head_circumference_list.html:70
+msgid "No head circumference entries found."
+msgstr "Fejkörfogat bejegyzés nem található."
+
+#: core/templates/core/height_confirm_delete.html:4
+msgid "Delete a Height Entry"
+msgstr "Magasság bejegyzés törlése"
+
+#: core/templates/core/height_form.html:8
+#: core/templates/core/height_form.html:17
+#: core/templates/core/height_form.html:27
+msgid "Add a Height Entry"
+msgstr "Magasság bejegyzés hozzáadása"
+
+#: core/templates/core/height_list.html:15
+msgid "Add Height"
+msgstr "Magasság hozzáadása"
+
+#: core/templates/core/height_list.html:70
+msgid "No height entries found."
+msgstr "Magasság bejegyzés nem található."
+
+#: core/templates/timeline/_timeline.html:44
+msgid "Duration: %(duration)s"
+msgstr "Időtartam: %(duration)s"
+
+#: core/templates/timeline/_timeline.html:53
+msgid "%(since)s since previous"
+msgstr "%(since)s előző óta"
+
+#: core/templates/timeline/_timeline.html:85
+msgid "No events"
+msgstr "Nincs esemény"
+
+#: core/timeline.py:185
+msgid "%(child)s had a %(type)s diaper change."
+msgstr "%(child)s-nak %(type)s pelenkacseréje volt."
+
+#: dashboard/templatetags/cards.py:372
+msgid "Height change per week"
+msgstr "Magasság válzotás / hét"
+
+#: dashboard/templatetags/cards.py:382
+msgid "Head circumference change per week"
+msgstr "Fejkörfogat változás / hét"
+
+#: dashboard/templatetags/cards.py:392
+msgid "BMI change per week"
+msgstr "BMI változás / hét"
+
+#: reports/graphs/bmi_change.py:27
+msgid "BMI"
+msgstr "BMI"
+
+#: reports/graphs/feeding_amounts.py:69
+msgid "Total Feeding Amount by Type"
+msgstr "Összes etetés típus szerint"
+
+#: reports/graphs/head_circumference_change.py:27
+msgid "Head Circumference"
+msgstr "Fejkörfogat"
+
+#: reports/graphs/height_change.py:27
+msgid "Height"
+msgstr "Magasság"
+
+#: babybuddy/settings/base.py:167
+msgid "Chinese (simplified)"
+msgstr "Kínai (egyszerűsített)"
+
+#: babybuddy/templates/error/400.html:4 babybuddy/templates/error/400.html:7
+msgid "Bad Request"
+msgstr "Hibás kérelem"
+
+#: babybuddy/templates/error/403_csrf_bad_origin.html:14
+msgid "How to Fix"
+msgstr "Hogyan javítható"
+
+#: babybuddy/templates/error/403_csrf_bad_origin.html:15
+msgid "Add %(origin)s to the CSRF_TRUSTED_ORIGINS
environment variable. If multiple origins are required separate with commas."
+msgstr "%(origin)s hozzáadása a CSRF_TRUSTED_ORIGINS
környezeti változóhoz. Több eredet hozzáadása vesszővel elválasztva lehetséges."
+
+#: babybuddy/templates/error/404.html:4 babybuddy/templates/error/404.html:7
+msgid "Page Not Found"
+msgstr "Az oldal nem található"
+
+#: babybuddy/templates/error/404.html:9
+msgid "The path %(request_path)s
does not exist."
+msgstr "A %(request_path)s
elérési út nem létezik."
+
+#: babybuddy/templates/error/500.html:4 babybuddy/templates/error/500.html:7
+msgid "Server Error"
+msgstr "Szerver hiba"
+
+#: babybuddy/templates/error/base.html:14
+msgid "Return to Baby Buddy"
+msgstr "Vissza Baby Buddy-hoz"
+
+#: babybuddy/views.py:43
+msgid "Forbidden"
+msgstr "Tiltott"
+
+#: babybuddy/views.py:44
+msgid "CSRF verification failed. Request aborted."
+msgstr "A CSRF-ellenőrzés nem sikerült. A kérés megszakítva."
+
+#: babybuddy/settings/base.py:166
+msgid "Catalan"
+msgstr "Katalán"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:93
+#: babybuddy/templates/babybuddy/nav-dropdown.html:316 core/models.py:437
+#: core/models.py:438 core/models.py:441
+#: core/templates/core/pumping_confirm_delete.html:7
+#: core/templates/core/pumping_form.html:13
+#: core/templates/core/pumping_list.html:4
+#: core/templates/core/pumping_list.html:7
+#: core/templates/core/pumping_list.html:12
+#: reports/templates/reports/pumping_amounts.html:4
+#: reports/templates/reports/pumping_amounts.html:8
+msgid "Pumping"
+msgstr "Pumpálás"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:322
+msgid "Pumping entry"
+msgstr "Pumpálás bevitele"
+
+#: core/filters.py:11 core/models.py:96 core/models.py:115
+msgid "Tag"
+msgstr "Címke"
+
+#: core/forms.py:136
+msgid "Click on the tags to add (+) or remove (-) tags or use the text editor to create new tags."
+msgstr "Kattintson a címkékre azok hozzáadásához (+) vagy eltávolításához (-), vagy használja a szövegszerkesztőt új címkék létrehozásához."
+
+#: core/models.py:90
+msgid "Last used"
+msgstr "Utoljára használva"
+
+#: core/models.py:97 core/templates/core/bmi_list.html:30
+#: core/templates/core/diaperchange_list.html:32
+#: core/templates/core/feeding_list.html:35
+#: core/templates/core/head_circumference_list.html:30
+#: core/templates/core/height_list.html:30
+#: core/templates/core/note_list.html:30 core/templates/core/sleep_list.html:32
+#: core/templates/core/temperature_list.html:30
+#: core/templates/core/tummytime_list.html:31
+#: core/templates/core/weight_list.html:30
+msgid "Tags"
+msgstr "Címkék"
+
+#: core/templates/core/pumping_confirm_delete.html:4
+msgid "Delete a Pumping Entry"
+msgstr "Pumpálás bejegyzés törlése"
+
+#: core/templates/core/pumping_form.html:8
+#: core/templates/core/pumping_form.html:17
+#: core/templates/core/pumping_form.html:27
+msgid "Add a Pumping Entry"
+msgstr "Egy pumpálás bejegyzés hozzáadása"
+
+#: core/templates/core/pumping_list.html:15
+msgid "Add Pumping Entry"
+msgstr "Pumpálás bejegyzés hozzáadás"
+
+#: core/templates/core/pumping_list.html:66
+msgid "No pumping entries found."
+msgstr "Pumpálás bejegyzés nem található."
+
+#: core/templates/core/widget_tag_editor.html:22
+msgid "Tag name"
+msgstr "Címke név"
+
+#: core/templates/core/widget_tag_editor.html:27
+msgid "Recently used:"
+msgstr "Nemrég használta:"
+
+#: core/templates/core/widget_tag_editor.html:45
+msgctxt "Error modal"
+msgid "Error"
+msgstr "Hiba"
+
+#: core/templates/core/widget_tag_editor.html:50
+msgctxt "Error modal"
+msgid "An error ocurred."
+msgstr "Hiba történt."
+
+#: core/templates/core/widget_tag_editor.html:51
+msgctxt "Error modal"
+msgid "Invalid tag name."
+msgstr "Hibás címke név."
+
+#: core/templates/core/widget_tag_editor.html:52
+msgctxt "Error modal"
+msgid "Failed to create tag."
+msgstr "Címke létrehozása sikertelen."
+
+#: core/templates/core/widget_tag_editor.html:53
+msgctxt "Error modal"
+msgid "Failed to obtain tag data."
+msgstr "Hiba a címke lekérdezése közben."
+
+#: core/templates/core/widget_tag_editor.html:58
+msgctxt "Error modal"
+msgid "Close"
+msgstr "Bezár"
+
+#: dashboard/templates/cards/feeding_day.html:32
+msgid " %(since)s
"
+msgstr " %(since)s
"
+
+#: dashboard/templatetags/cards.py:410
+msgid "Diaper change frequency (past 3 days)"
+msgstr "Pelenkacsere gyakorisága (utolsó 3 nap)"
+
+#: dashboard/templatetags/cards.py:414
+msgid "Diaper change frequency (past 2 weeks)"
+msgstr "Pelenkacsere gyakorisága (utolsó 2 hét)"
+
+#: reports/graphs/pumping_amounts.py:57
+msgid "Total Pumping Amount"
+msgstr "Összes pumpált mennyiség"
+
+#: reports/graphs/pumping_amounts.py:60
+msgid "Pumping Amount"
+msgstr "Pumpált mennyiség"
+
+#: reports/templates/reports/report_list.html:10
+msgid "Body Mass Index (BMI)"
+msgstr "Testtömegindex (BMI)"
+
+#: reports/templates/reports/report_list.html:18
+msgid "Pumping Amounts"
+msgstr "Pumpált mennyiség"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:17
+msgid "Are you sure you want to delete %(number)s inactive timer?"
+msgid_plural "Are you sure you want to delete %(number)s inactive timers?"
+msgstr[0] "Biztosan törlöd a %(number)s inaktív stoppert?"
+msgstr[1] "Biztosan törlöd a %(number)s inaktív stoppert?"
+
+#: dashboard/templates/cards/feeding_day.html:25
+msgid "%(counter)s feeding"
+msgid_plural "%(counter)s feedings"
+msgstr[0] "%(counter)s etetés"
+msgstr[1] "%(counter)s etetés"
+
+#: dashboard/templates/cards/feeding_last_method.html:21
+msgid "%(n)s feeding ago"
+msgid_plural "%(n)s feedings ago"
+msgstr[0] "%(n)s etetéssel ezelőtt"
+msgstr[1] "%(n)s etetéssel ezelőtt"
+
+#: dashboard/templates/cards/sleep_naps_day.html:12
+msgid "%(count)s nap"
+msgid_plural "%(count)s naps"
+msgstr[0] "%(count)s szundi"
+msgstr[1] "%(count)s szundi"
+
+#: dashboard/templates/cards/timer_list.html:12
+msgid "%(count)s active timer"
+msgid_plural "%(count)s active timers"
+msgstr[0] "%(count)s aktív stopper"
+msgstr[1] "%(count)s aktív stopper"
+
diff --git a/locale/it/LC_MESSAGES/django.mo b/locale/it/LC_MESSAGES/django.mo
index f611dda9..2b6d976b 100644
Binary files a/locale/it/LC_MESSAGES/django.mo and b/locale/it/LC_MESSAGES/django.mo differ
diff --git a/locale/nl/LC_MESSAGES/django.mo b/locale/nl/LC_MESSAGES/django.mo
index 4a3a7240..82008a97 100644
Binary files a/locale/nl/LC_MESSAGES/django.mo and b/locale/nl/LC_MESSAGES/django.mo differ
diff --git a/locale/pl/LC_MESSAGES/django.mo b/locale/pl/LC_MESSAGES/django.mo
index fe0b1db4..6cee69bf 100644
Binary files a/locale/pl/LC_MESSAGES/django.mo and b/locale/pl/LC_MESSAGES/django.mo differ
diff --git a/locale/pt/LC_MESSAGES/django.mo b/locale/pt/LC_MESSAGES/django.mo
index c2b0a74c..f9dcaba5 100644
Binary files a/locale/pt/LC_MESSAGES/django.mo and b/locale/pt/LC_MESSAGES/django.mo differ
diff --git a/locale/ru/LC_MESSAGES/django.mo b/locale/ru/LC_MESSAGES/django.mo
new file mode 100644
index 00000000..7795d5ad
Binary files /dev/null and b/locale/ru/LC_MESSAGES/django.mo differ
diff --git a/locale/ru/LC_MESSAGES/django.po b/locale/ru/LC_MESSAGES/django.po
new file mode 100644
index 00000000..e9e54f9c
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/django.po
@@ -0,0 +1,2139 @@
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: POEditor.com\n"
+"Project-Id-Version: Baby Buddy\n"
+"Language: ru\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: babybuddy/admin.py:12 babybuddy/admin.py:13
+#: babybuddy/templates/babybuddy/nav-dropdown.html:347
+#: babybuddy/templates/babybuddy/user_settings_form.html:8
+msgid "Settings"
+msgstr "Настройки"
+
+#: babybuddy/admin.py:17 babybuddy/templates/babybuddy/nav-dropdown.html:111
+#: babybuddy/templates/babybuddy/user_settings_form.html:61
+#: dashboard/templates/dashboard/child.html:4
+#: dashboard/templates/dashboard/child.html:9
+#: dashboard/templates/dashboard/child_button_group.html:6
+#: dashboard/templates/dashboard/dashboard.html:4
+#: dashboard/templates/dashboard/dashboard.html:7
+msgid "Dashboard"
+msgstr "Панель"
+
+#: babybuddy/models.py:19
+msgid "Refresh rate"
+msgstr "Частота обновления"
+
+#: babybuddy/models.py:21
+msgid "This setting will only be used when a browser does not support refresh on focus."
+msgstr "Этот параметр будет использоваться только в том случае, если браузер не поддерживает обновление при наведении."
+
+#: babybuddy/models.py:28
+msgid "disabled"
+msgstr "Отключено"
+
+#: babybuddy/models.py:29
+msgid "1 min."
+msgstr "1 мин."
+
+#: babybuddy/models.py:30
+msgid "2 min."
+msgstr "2 мин."
+
+#: babybuddy/models.py:31
+msgid "3 min."
+msgstr "3 мин."
+
+#: babybuddy/models.py:32
+msgid "4 min."
+msgstr "4 мин."
+
+#: babybuddy/models.py:33
+msgid "5 min."
+msgstr "5 мин."
+
+#: babybuddy/models.py:34
+msgid "10 min."
+msgstr "10 мин."
+
+#: babybuddy/models.py:35
+msgid "15 min."
+msgstr "15 мин."
+
+#: babybuddy/models.py:36
+msgid "30 min."
+msgstr "30 мин."
+
+#: babybuddy/models.py:63
+msgid "Language"
+msgstr "Язык"
+
+#: babybuddy/models.py:73
+msgid "{user}'s Settings"
+msgstr "Настройки {user}"
+
+#: babybuddy/settings/base.py:171
+msgid "English"
+msgstr "English"
+
+#: babybuddy/settings/base.py:171
+msgid "French"
+msgstr "French"
+
+#: babybuddy/templates/error/403.html:4 babybuddy/templates/error/403.html:7
+msgid "Permission Denied"
+msgstr "В доступе отказано"
+
+#: babybuddy/templates/403.html:12
+msgid "You do not have permission to access this resource.\n"
+" Contact a site administrator for assistance."
+msgstr "У вас недостаточно прав для достуа к данному ресурсу. \n"
+"Пожалуйста обратитесь к администратору."
+
+#: babybuddy/templates/babybuddy/base.html:36
+msgid "Home"
+msgstr "Дом"
+
+#: babybuddy/templates/babybuddy/filter.html:18
+msgid "Filter"
+msgstr "Фильтр"
+
+#: babybuddy/templates/babybuddy/filter.html:19
+msgid "Reset"
+msgstr "Сброс"
+
+#: babybuddy/templates/babybuddy/filter.html:32
+msgid "Filters"
+msgstr "Фильтры"
+
+#: babybuddy/templates/babybuddy/form.html:14
+#: babybuddy/templates/babybuddy/user_settings_form.html:89
+msgid "Submit"
+msgstr "Сохранить"
+
+#: babybuddy/templates/babybuddy/messages.html:18
+#: babybuddy/templates/babybuddy/user_settings_form.html:19
+msgid "Error: %(error)s"
+msgstr "Ошибка: %(error)s"
+
+#: babybuddy/templates/babybuddy/messages.html:23
+msgid "Error: Some fields have errors. See below for details. "
+msgstr "Ошибка: Некоторые поля заполнены неверно. Подробности ниже. "
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:51 core/models.py:248
+#: core/models.py:252
+msgid "Diaper Change"
+msgstr "Смена подгузника"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:57
+#: babybuddy/templates/babybuddy/nav-dropdown.html:281 core/models.py:312
+#: core/models.py:316 core/templates/core/timer_detail.html:43
+msgid "Feeding"
+msgstr "Поел"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:63
+#: babybuddy/templates/babybuddy/nav-dropdown.html:157 core/models.py:396
+#: core/models.py:407 core/models.py:411 core/templates/core/note_list.html:29
+msgid "Note"
+msgstr "Заметка"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:69
+#: babybuddy/templates/babybuddy/nav-dropdown.html:288
+#: babybuddy/templates/babybuddy/welcome.html:42 core/models.py:467
+#: core/models.py:468 core/models.py:471
+#: core/templates/core/sleep_confirm_delete.html:7
+#: core/templates/core/sleep_form.html:13 core/templates/core/sleep_list.html:4
+#: core/templates/core/sleep_list.html:7 core/templates/core/sleep_list.html:12
+#: core/templates/core/timer_detail.html:51
+msgid "Sleep"
+msgstr "Сон"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:81
+#: babybuddy/templates/babybuddy/nav-dropdown.html:301
+#: babybuddy/templates/babybuddy/welcome.html:50 core/models.py:647
+#: core/models.py:648 core/models.py:651
+#: core/templates/core/timer_detail.html:59
+#: core/templates/core/tummytime_confirm_delete.html:7
+#: core/templates/core/tummytime_form.html:13
+#: core/templates/core/tummytime_list.html:4
+#: core/templates/core/tummytime_list.html:7
+#: core/templates/core/tummytime_list.html:12
+msgid "Tummy Time"
+msgstr "Время на животике"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:87
+#: babybuddy/templates/babybuddy/nav-dropdown.html:193 core/models.py:673
+#: core/models.py:685 core/models.py:686 core/models.py:689
+#: core/templates/core/weight_confirm_delete.html:7
+#: core/templates/core/weight_form.html:13
+#: core/templates/core/weight_list.html:4
+#: core/templates/core/weight_list.html:7
+#: core/templates/core/weight_list.html:12
+#: core/templates/core/weight_list.html:29 reports/graphs/weight_change.py:19
+#: reports/graphs/weight_change.py:30
+#: reports/templates/reports/report_list.html:22
+#: reports/templates/reports/weight_change.html:4
+#: reports/templates/reports/weight_change.html:8
+msgid "Weight"
+msgstr "Вес"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:129
+#: babybuddy/templates/babybuddy/nav-dropdown.html:137 core/models.py:188
+#: core/templates/core/child_confirm_delete.html:7
+#: core/templates/core/child_detail.html:7
+#: core/templates/core/child_form.html:13 core/templates/core/child_list.html:4
+#: core/templates/core/child_list.html:7 core/templates/core/child_list.html:12
+#: dashboard/templates/dashboard/child.html:7
+#: reports/templates/reports/base.html:7
+msgid "Children"
+msgstr "Дети"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:143 core/models.py:137
+#: core/models.py:187 core/models.py:221 core/models.py:274 core/models.py:335
+#: core/models.py:367 core/models.py:394 core/models.py:426 core/models.py:450
+#: core/models.py:503 core/models.py:537 core/models.py:630 core/models.py:671
+#: core/templates/core/bmi_list.html:27
+#: core/templates/core/diaperchange_list.html:27
+#: core/templates/core/feeding_list.html:27
+#: core/templates/core/head_circumference_list.html:27
+#: core/templates/core/height_list.html:27
+#: core/templates/core/note_list.html:27
+#: core/templates/core/pumping_list.html:27
+#: core/templates/core/sleep_list.html:28
+#: core/templates/core/temperature_list.html:27
+#: core/templates/core/timer_list.html:27
+#: core/templates/core/tummytime_list.html:27
+#: core/templates/core/weight_list.html:27
+msgid "Child"
+msgstr "Ребёнок"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:151 core/models.py:143
+#: core/models.py:240 core/models.py:304 core/models.py:343 core/models.py:373
+#: core/models.py:408 core/models.py:430 core/models.py:458 core/models.py:511
+#: core/models.py:677 core/templates/core/note_confirm_delete.html:7
+#: core/templates/core/note_form.html:13 core/templates/core/note_list.html:4
+#: core/templates/core/note_list.html:7 core/templates/core/note_list.html:12
+msgid "Notes"
+msgstr "Заметки"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:199
+msgid "Weight entry"
+msgstr "Вес"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:255
+msgid "Activities"
+msgstr "Активности"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:262
+#: reports/graphs/diaperchange_lifetimes.py:27
+msgid "Changes"
+msgstr "Переодевания"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:268
+msgid "Change"
+msgstr "Переоделся"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:275
+#: babybuddy/templates/babybuddy/welcome.html:34 core/models.py:313
+#: core/templates/core/feeding_confirm_delete.html:7
+#: core/templates/core/feeding_form.html:13
+#: core/templates/core/feeding_list.html:4
+#: core/templates/core/feeding_list.html:7
+#: core/templates/core/feeding_list.html:12
+msgid "Feedings"
+msgstr "Кормления"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:294
+msgid "Sleep entry"
+msgstr "Поспал"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:307
+msgid "Tummy Time entry"
+msgstr "Полежал на животике"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:346
+#: babybuddy/templates/babybuddy/user_list.html:17
+#: babybuddy/templates/babybuddy/user_password_form.html:7
+#: babybuddy/templates/babybuddy/user_settings_form.html:7 core/models.py:556
+#: core/templates/core/timer_list.html:32
+msgid "User"
+msgstr "Пользователь"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:348
+msgid "Password"
+msgstr "Пароль"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:352
+msgid "Logout"
+msgstr "Выйти"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:355
+msgid "Site"
+msgstr "Сайт"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:356
+msgid "API Browser"
+msgstr "API Browser"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:358
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:7
+#: babybuddy/templates/babybuddy/user_form.html:13
+#: babybuddy/templates/babybuddy/user_list.html:4
+#: babybuddy/templates/babybuddy/user_list.html:7
+msgid "Users"
+msgstr "Пользователи"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:250
+msgid "Backend Admin"
+msgstr "Администратор"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:361
+msgid "Support"
+msgstr "Поддержка"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:363
+msgid "Source Code"
+msgstr "Исходный код"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:365
+msgid "Chat / Support"
+msgstr "Чат / Поддержка"
+
+#: babybuddy/templates/babybuddy/paginator.html:11
+#: core/templates/timeline/_timeline.html:5
+#: core/templates/timeline/_timeline.html:7
+#: core/templates/timeline/_timeline.html:71
+#: core/templates/timeline/_timeline.html:73
+#: dashboard/templates/cards/feeding_day.html:43
+#: dashboard/templates/cards/feeding_last_method.html:34
+#: dashboard/templates/cards/statistics.html:34
+msgid "Previous"
+msgstr "Назад"
+
+#: babybuddy/templates/babybuddy/paginator.html:28
+#: core/templates/timeline/_timeline.html:12
+#: core/templates/timeline/_timeline.html:14
+#: core/templates/timeline/_timeline.html:78
+#: core/templates/timeline/_timeline.html:80
+#: dashboard/templates/cards/feeding_day.html:47
+#: dashboard/templates/cards/feeding_last_method.html:38
+#: dashboard/templates/cards/statistics.html:38
+msgid "Next"
+msgstr "Вперёд"
+
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:4
+msgid "Delete User"
+msgstr "Удалить пользователя"
+
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:9
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:18
+#: core/templates/core/bmi_confirm_delete.html:8
+#: core/templates/core/bmi_confirm_delete.html:17
+#: core/templates/core/child_confirm_delete.html:9
+#: core/templates/core/child_confirm_delete.html:31
+#: core/templates/core/diaperchange_confirm_delete.html:8
+#: core/templates/core/diaperchange_confirm_delete.html:17
+#: core/templates/core/feeding_confirm_delete.html:8
+#: core/templates/core/feeding_confirm_delete.html:17
+#: core/templates/core/head_circumference_confirm_delete.html:8
+#: core/templates/core/head_circumference_confirm_delete.html:17
+#: core/templates/core/height_confirm_delete.html:8
+#: core/templates/core/height_confirm_delete.html:17
+#: core/templates/core/note_confirm_delete.html:8
+#: core/templates/core/note_confirm_delete.html:17
+#: core/templates/core/pumping_confirm_delete.html:8
+#: core/templates/core/pumping_confirm_delete.html:17
+#: core/templates/core/sleep_confirm_delete.html:8
+#: core/templates/core/sleep_confirm_delete.html:17
+#: core/templates/core/temperature_confirm_delete.html:8
+#: core/templates/core/temperature_confirm_delete.html:17
+#: core/templates/core/timer_confirm_delete.html:11
+#: core/templates/core/timer_confirm_delete.html:20
+#: core/templates/core/timer_confirm_delete_inactive.html:23
+#: core/templates/core/tummytime_confirm_delete.html:8
+#: core/templates/core/tummytime_confirm_delete.html:17
+#: core/templates/core/weight_confirm_delete.html:8
+#: core/templates/core/weight_confirm_delete.html:17
+#: dashboard/templates/dashboard/child_button_group.html:27
+msgid "Delete"
+msgstr "Удалить"
+
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:15
+#: core/templates/core/bmi_confirm_delete.html:14
+#: core/templates/core/child_confirm_delete.html:15
+#: core/templates/core/diaperchange_confirm_delete.html:14
+#: core/templates/core/feeding_confirm_delete.html:14
+#: core/templates/core/head_circumference_confirm_delete.html:14
+#: core/templates/core/height_confirm_delete.html:14
+#: core/templates/core/note_confirm_delete.html:14
+#: core/templates/core/pumping_confirm_delete.html:14
+#: core/templates/core/sleep_confirm_delete.html:14
+#: core/templates/core/temperature_confirm_delete.html:14
+#: core/templates/core/timer_confirm_delete.html:17
+#: core/templates/core/tummytime_confirm_delete.html:14
+#: core/templates/core/weight_confirm_delete.html:14
+msgid "Are you sure you want to delete %(object)s?
"
+msgstr "Вы уверены что хотите удалить %(object)s?
"
+
+#: babybuddy/templates/babybuddy/user_confirm_delete.html:19
+#: core/templates/core/bmi_confirm_delete.html:18
+#: core/templates/core/child_confirm_delete.html:32
+#: core/templates/core/diaperchange_confirm_delete.html:18
+#: core/templates/core/feeding_confirm_delete.html:18
+#: core/templates/core/head_circumference_confirm_delete.html:18
+#: core/templates/core/height_confirm_delete.html:18
+#: core/templates/core/note_confirm_delete.html:18
+#: core/templates/core/pumping_confirm_delete.html:18
+#: core/templates/core/sleep_confirm_delete.html:18
+#: core/templates/core/temperature_confirm_delete.html:18
+#: core/templates/core/timer_confirm_delete.html:21
+#: core/templates/core/timer_confirm_delete_inactive.html:24
+#: core/templates/core/tummytime_confirm_delete.html:18
+#: core/templates/core/weight_confirm_delete.html:18
+msgid "Cancel"
+msgstr "Отмена"
+
+#: babybuddy/templates/babybuddy/user_form.html:8
+#: babybuddy/templates/babybuddy/user_form.html:18
+#: babybuddy/templates/babybuddy/user_form.html:28
+#: babybuddy/templates/babybuddy/user_list.html:65
+msgid "Create User"
+msgstr "Новый пользователь"
+
+#: babybuddy/templates/babybuddy/user_form.html:16
+#: core/templates/core/bmi_form.html:15 core/templates/core/child_form.html:16
+#: core/templates/core/diaperchange_form.html:15
+#: core/templates/core/feeding_form.html:15
+#: core/templates/core/head_circumference_form.html:15
+#: core/templates/core/height_form.html:15
+#: core/templates/core/note_form.html:15
+#: core/templates/core/pumping_form.html:15
+#: core/templates/core/sleep_form.html:15
+#: core/templates/core/temperature_form.html:15
+#: core/templates/core/timer_form.html:10
+#: core/templates/core/tummytime_form.html:15
+#: core/templates/core/weight_form.html:15
+msgid "Update"
+msgstr "Обновить"
+
+#: babybuddy/templates/babybuddy/user_form.html:24
+#: core/templates/core/bmi_form.html:23 core/templates/core/child_form.html:24
+#: core/templates/core/diaperchange_form.html:23
+#: core/templates/core/feeding_form.html:23
+#: core/templates/core/head_circumference_form.html:23
+#: core/templates/core/height_form.html:23
+#: core/templates/core/note_form.html:23
+#: core/templates/core/pumping_form.html:23
+#: core/templates/core/sleep_form.html:23
+#: core/templates/core/temperature_form.html:23
+#: core/templates/core/timer_form.html:18
+#: core/templates/core/tummytime_form.html:23
+#: core/templates/core/weight_form.html:23
+msgid "Update %(object)s
"
+msgstr "Обновить %(object)s
"
+
+#: babybuddy/templates/babybuddy/user_list.html:18
+#: core/templates/core/child_list.html:25
+msgid "First Name"
+msgstr "Имя"
+
+#: babybuddy/templates/babybuddy/user_list.html:19
+#: core/templates/core/child_list.html:26
+msgid "Last Name"
+msgstr "Фамилия"
+
+#: babybuddy/templates/babybuddy/user_list.html:20
+msgid "Email"
+msgstr "Email"
+
+#: babybuddy/templates/babybuddy/user_list.html:21
+msgid "Staff"
+msgstr "Сотрудник"
+
+#: babybuddy/templates/babybuddy/user_list.html:22 core/models.py:551
+#: core/templates/core/timer_list.html:31
+msgid "Active"
+msgstr "Активный"
+
+#: babybuddy/templates/babybuddy/user_list.html:23
+#: core/templates/core/bmi_list.html:24 core/templates/core/bmi_list.html:38
+#: core/templates/core/child_list.html:28
+#: core/templates/core/child_list.html:48
+#: core/templates/core/diaperchange_list.html:24
+#: core/templates/core/diaperchange_list.html:40
+#: core/templates/core/feeding_list.html:24
+#: core/templates/core/feeding_list.html:43
+#: core/templates/core/head_circumference_list.html:24
+#: core/templates/core/head_circumference_list.html:38
+#: core/templates/core/height_list.html:24
+#: core/templates/core/height_list.html:38
+#: core/templates/core/note_list.html:24 core/templates/core/note_list.html:37
+#: core/templates/core/pumping_list.html:24
+#: core/templates/core/pumping_list.html:37
+#: core/templates/core/sleep_list.html:24
+#: core/templates/core/sleep_list.html:40
+#: core/templates/core/temperature_list.html:24
+#: core/templates/core/temperature_list.html:38
+#: core/templates/core/tummytime_list.html:23
+#: core/templates/core/tummytime_list.html:38
+#: core/templates/core/weight_list.html:24
+#: core/templates/core/weight_list.html:38
+msgid "Actions"
+msgstr "Действия"
+
+#: babybuddy/templates/babybuddy/user_list.html:55
+msgid "No users found."
+msgstr "Пользователи не найдены."
+
+#: babybuddy/templates/babybuddy/user_password_form.html:4
+#: babybuddy/templates/babybuddy/user_password_form.html:8
+#: babybuddy/templates/babybuddy/user_password_form.html:12
+msgid "Change Password"
+msgstr "Сменить пароль"
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:4
+#: babybuddy/templates/babybuddy/user_settings_form.html:12
+msgid "User Settings"
+msgstr "Настройки пользователя"
+
+#: babybuddy/templates/babybuddy/messages.html:23
+#: babybuddy/templates/babybuddy/user_settings_form.html:26
+msgid "Error: Some fields have errors. See below for details."
+msgstr "Ошибка: Некоторые поля заполнены не корректно. Подробности ниже."
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:33
+msgid "User Profile"
+msgstr "Профиль"
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:79
+msgid "API"
+msgstr "API"
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:81
+msgid "Key"
+msgstr "Ключ"
+
+#: babybuddy/templates/babybuddy/user_settings_form.html:84
+msgid "Regenerate"
+msgstr "Пересоздать"
+
+#: babybuddy/templates/babybuddy/welcome.html:4
+#: babybuddy/templates/babybuddy/welcome.html:7
+msgid "Welcome!"
+msgstr "Добро пожаловать!"
+
+#: babybuddy/templates/babybuddy/welcome.html:12
+msgid "Welcome to Baby Buddy!"
+msgstr "Добро пожаловать в Baby Buddy!"
+
+#: babybuddy/templates/babybuddy/welcome.html:14
+msgid "Learn about and predict baby's needs without\n"
+" (as much) guess work by using Baby Buddy to track —"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/welcome.html:26 core/models.py:249
+#: core/templates/core/diaperchange_confirm_delete.html:7
+#: core/templates/core/diaperchange_form.html:13
+#: core/templates/core/diaperchange_list.html:4
+#: core/templates/core/diaperchange_list.html:7
+#: core/templates/core/diaperchange_list.html:12
+#: dashboard/templates/cards/diaperchange_types.html:6
+msgid "Diaper Changes"
+msgstr "Смена подгузника"
+
+#: babybuddy/templates/babybuddy/welcome.html:54
+msgid "As the amount of entries grows, Baby Buddy will help\n"
+" parents and caregivers to identify small patterns in baby's habits\n"
+" using the dashboard and graphs. Baby Buddy is mobile-friendly and\n"
+" uses a dark theme to help weary moms and dads with 2AM feedings and\n"
+" changings. To get started, just click the button below to add your\n"
+" first (or second, third, etc.) child!"
+msgstr "По мере роста количества записей Baby Buddy будет помогать \n"
+"родителям и нянькам находить небольшие закономерности в привычках ребенка \n"
+"с помощью панели и графиков. Baby Buddy подходит для мобильных \n"
+"устройств \n"
+"и использует темную тему, чтобы помочь усталым мамам и папам с кормлением \n"
+"и переодеванием в 2 часа ночи. Чтобы начать, просто нажмите кнопку ниже, чтобы добавить своего \n"
+"первого (или второго, третьего и т. д.) ребенка!"
+
+#: babybuddy/templates/babybuddy/welcome.html:68
+#: core/templates/core/child_form.html:8 core/templates/core/child_form.html:18
+#: core/templates/core/child_form.html:28
+msgid "Add a Child"
+msgstr "Добавить ребёнка"
+
+#: babybuddy/templates/registration/login.html:32
+msgid "Login"
+msgstr "Вход"
+
+#: babybuddy/templates/registration/login.html:38
+msgid "Forgot your password?"
+msgstr "Забыли пароль?"
+
+#: babybuddy/templates/registration/password_reset_complete.html:4
+msgid "Password Reset Successfully!"
+msgstr "Пароль успешно сброшен!"
+
+#: babybuddy/templates/registration/password_reset_complete.html:8
+msgid "Your password has been set. You may go ahead and log in now."
+msgstr "Ваш пароль установлен. Вы можете входить."
+
+#: babybuddy/templates/registration/password_reset_complete.html:9
+msgid "Log in"
+msgstr "Вход"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:4
+msgid "Password Reset"
+msgstr "Сброс пароля"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:12
+msgid "Oh snap! The\n"
+" two passwords did not match. Please try again.
"
+msgstr ""
+
+#: babybuddy/templates/registration/password_reset_confirm.html:22
+msgid "Enter your new password in each field below."
+msgstr "Введите пароль в каждое поле ниже."
+
+#: babybuddy/templates/registration/password_reset_confirm.html:46
+#: babybuddy/templates/registration/password_reset_form.html:31
+msgid "Reset Password"
+msgstr "Сбросить пароль"
+
+#: babybuddy/templates/registration/password_reset_done.html:4
+msgid "Reset Email Sent"
+msgstr "Email с информацией о сбросе пароля отправлен"
+
+#: babybuddy/templates/registration/password_reset_done.html:8
+msgid "We've emailed you instructions for setting your\n"
+" password, if an account exists with the email you entered. You\n"
+" should receive them shortly.
\n"
+" If you don't receive an email, please make sure you've\n"
+" entered the address you registered with, and check your spam\n"
+" folder.
"
+msgstr ""
+
+#: babybuddy/templates/registration/password_reset_form.html:4
+msgid "Forgot Password"
+msgstr "Забыл пароль"
+
+#: babybuddy/templates/registration/password_reset_form.html:8
+msgid "Enter your account email address in the\n"
+" form below. If the address is valid, you will receive instructions for\n"
+" resetting your password.
"
+msgstr ""
+
+#: babybuddy/views.py:102
+msgid "User %(username)s added!"
+msgstr "Пользователь %(username)s добавлен!"
+
+#: babybuddy/views.py:113
+msgid "User %(username)s updated."
+msgstr "Пользователь %(username)s обновлён."
+
+#: babybuddy/views.py:125
+msgid "User {user} deleted."
+msgstr "Пользователь {user} удалён."
+
+#: babybuddy/views.py:146
+msgid "Password updated."
+msgstr "Пароль обновлён"
+
+#: babybuddy/views.py:175
+msgid "User API key regenerated."
+msgstr "API ключ пользователя пересоздан."
+
+#: babybuddy/views.py:188
+msgid "Settings saved!"
+msgstr "Настройки сохранены!"
+
+#: core/forms.py:120
+msgid "Name does not match child name."
+msgstr "Имя не совпадает с именем ребёнка."
+
+#: core/models.py:28
+msgid "Date can not be in the future."
+msgstr "Дата не может быть в будущем."
+
+#: core/models.py:42
+msgid "Start time must come before end time."
+msgstr ""
+
+#: core/models.py:45
+msgid "Duration too long."
+msgstr "Продолжительность слишком большая."
+
+#: core/models.py:61
+msgid "Another entry intersects the specified time period."
+msgstr "Другая запись пересекает указанный промежуток времени."
+
+#: core/models.py:75
+msgid "Date/time can not be in the future."
+msgstr "Дата/время не могут быть из будущего."
+
+#: core/models.py:163
+msgid "First name"
+msgstr "Имя"
+
+#: core/models.py:165
+msgid "Last name"
+msgstr "Фамилия"
+
+#: core/models.py:167
+msgid "Birth date"
+msgstr "Дата рождения"
+
+#: core/models.py:174
+msgid "Slug"
+msgstr ""
+
+#: core/models.py:177
+msgid "Picture"
+msgstr "Изображение"
+
+#: core/models.py:224 core/models.py:398 core/models.py:429 core/models.py:509
+#: core/templates/core/diaperchange_list.html:25
+#: core/templates/core/note_list.html:25
+#: core/templates/core/pumping_list.html:25
+#: core/templates/core/temperature_list.html:25
+msgid "Time"
+msgstr "Время"
+
+#: core/models.py:226 core/templates/core/diaperchange_list.html:61
+#: reports/graphs/diaperchange_types.py:36
+msgid "Wet"
+msgstr "Жидкий"
+
+#: core/models.py:227 core/templates/core/diaperchange_list.html:62
+#: reports/graphs/diaperchange_types.py:30
+msgid "Solid"
+msgstr "Твёрдый"
+
+#: core/models.py:231
+msgid "Black"
+msgstr "Черный"
+
+#: core/models.py:232
+msgid "Brown"
+msgstr "Коричниевый"
+
+#: core/models.py:233
+msgid "Green"
+msgstr "Зелёный"
+
+#: core/models.py:234
+msgid "Yellow"
+msgstr "Желтый"
+
+#: core/models.py:84 core/models.py:237
+#: core/templates/core/diaperchange_list.html:30
+msgid "Color"
+msgstr "Цвет"
+
+#: core/models.py:180
+msgid "Wet and/or solid is required."
+msgstr "Необходимо указать твёрдый или жидкий стул."
+
+#: core/models.py:276 core/models.py:453 core/models.py:543 core/models.py:632
+msgid "Start time"
+msgstr "Время начала"
+
+#: core/models.py:277 core/models.py:454 core/models.py:546 core/models.py:633
+msgid "End time"
+msgstr "Время конца"
+
+#: core/models.py:279 core/models.py:456 core/models.py:549 core/models.py:635
+#: core/templates/core/feeding_list.html:34
+#: core/templates/core/sleep_list.html:30
+#: core/templates/core/timer_list.html:29
+#: core/templates/core/tummytime_list.html:29
+msgid "Duration"
+msgstr "Продолжительность"
+
+#: core/models.py:283
+msgid "Breast milk"
+msgstr "Грудное молоко"
+
+#: core/models.py:284
+msgid "Formula"
+msgstr "Формула"
+
+#: core/models.py:289 core/templates/core/feeding_list.html:30
+msgid "Type"
+msgstr "Тип"
+
+#: core/models.py:293
+msgid "Bottle"
+msgstr "Бутылочка"
+
+#: core/models.py:294
+msgid "Left breast"
+msgstr "Левая грудь"
+
+#: core/models.py:295
+msgid "Right breast"
+msgstr "Правая грудь"
+
+#: core/models.py:301 core/templates/core/feeding_list.html:29
+msgid "Method"
+msgstr "Метод"
+
+#: core/models.py:239 core/models.py:303 core/models.py:428
+#: core/templates/core/diaperchange_list.html:31
+#: core/templates/core/pumping_list.html:29
+msgid "Amount"
+msgstr "Сколько"
+
+#: core/models.py:243
+msgid "Only \"Bottle\" method is allowed with \"Formula\" type."
+msgstr "Если указана \"Формула\" тип кормления должен быть \"Бутылочка\"."
+
+#: core/models.py:540 core/templates/core/timer_list.html:25
+msgid "Name"
+msgstr "Имя"
+
+#: core/models.py:564 core/templates/core/timer_form.html:4
+msgid "Timer"
+msgstr "Таймер"
+
+#: core/models.py:565 core/templates/core/timer_confirm_delete.html:9
+#: core/templates/core/timer_confirm_delete_inactive.html:9
+#: core/templates/core/timer_detail.html:8
+#: core/templates/core/timer_form.html:7 core/templates/core/timer_list.html:4
+#: core/templates/core/timer_list.html:7 core/templates/core/timer_list.html:12
+#: core/templates/core/timer_nav.html:10
+msgid "Timers"
+msgstr "Таймеры"
+
+#: core/models.py:568
+msgid "Timer #{id}"
+msgstr "Таймер №{id}"
+
+#: core/models.py:638 core/templates/core/tummytime_list.html:30
+msgid "Milestone"
+msgstr "Достижение"
+
+#: core/models.py:141 core/models.py:341 core/models.py:371 core/models.py:675
+#: core/templates/core/bmi_list.html:25
+#: core/templates/core/feeding_list.html:25
+#: core/templates/core/head_circumference_list.html:25
+#: core/templates/core/height_list.html:25
+#: core/templates/core/weight_list.html:25 reports/graphs/bmi_change.py:28
+#: reports/graphs/diaperchange_amounts.py:37
+#: reports/graphs/diaperchange_types.py:49 reports/graphs/feeding_amounts.py:70
+#: reports/graphs/feeding_duration.py:56
+#: reports/graphs/head_circumference_change.py:28
+#: reports/graphs/height_change.py:28 reports/graphs/pumping_amounts.py:58
+#: reports/graphs/sleep_pattern.py:151 reports/graphs/sleep_totals.py:59
+#: reports/graphs/tummytime_duration.py:51 reports/graphs/weight_change.py:28
+msgid "Date"
+msgstr "Дата"
+
+#: core/templates/core/child_confirm_delete.html:4
+msgid "Delete a Child"
+msgstr "Удалить ребёнка"
+
+#: core/templates/core/child_confirm_delete.html:20
+msgid "To confirm this action. Type the full name of the child below."
+msgstr "Чтобы подтвердить данное действие введите полное имя ребёнка ниже."
+
+#: core/templates/core/child_detail.html:23
+#: dashboard/templates/dashboard/dashboard.html:32
+msgid "Born"
+msgstr "Родился"
+
+#: core/templates/core/child_detail.html:24
+#: dashboard/templates/dashboard/dashboard.html:33
+msgid "Age"
+msgstr "Возраст"
+
+#: core/templates/timeline/_timeline.html:38
+msgid "%(since)s ago (%(time)s)"
+msgstr "%(since)s тому назад (%(time)s)"
+
+#: core/templates/core/child_list.html:27
+msgid "Birth Date"
+msgstr "Дата рождения"
+
+#: core/templates/core/child_list.html:67
+msgid "No children found."
+msgstr "У вас нет детей."
+
+#: core/templates/core/diaperchange_confirm_delete.html:4
+msgid "Delete a Diaper Change"
+msgstr "Удалить смену подгузника"
+
+#: core/templates/core/diaperchange_form.html:6
+msgid "Update a Diaper Change"
+msgstr "Изменить смену подгузника"
+
+#: core/templates/core/diaperchange_form.html:8
+#: core/templates/core/diaperchange_form.html:27
+msgid "Add a Diaper Change"
+msgstr "Добавить запись о смене подгузника"
+
+#: core/templates/core/diaperchange_form.html:17
+#: core/templates/core/feeding_form.html:17
+#: core/templates/core/note_form.html:17 core/templates/core/sleep_form.html:17
+#: core/templates/core/tummytime_form.html:17
+#: core/templates/core/widget_tag_editor.html:24
+msgid "Add"
+msgstr "Добавить"
+
+#: core/templates/core/diaperchange_list.html:77
+msgid "No diaper changes found."
+msgstr "Не найдено записей о смене подгузника."
+
+#: core/templates/core/diaperchange_list.html:63
+msgid "Add a Change"
+msgstr "Добавить смену"
+
+#: core/templates/core/feeding_confirm_delete.html:4
+msgid "Delete a Feeding"
+msgstr "Удалить кормление"
+
+#: core/templates/core/feeding_form.html:6
+msgid "Update a Feeding"
+msgstr "Изменить кормление"
+
+#: core/templates/core/feeding_form.html:8
+#: core/templates/core/feeding_form.html:27
+msgid "Add a Feeding"
+msgstr "Добавить кормление"
+
+#: core/templates/core/feeding_list.html:33
+msgid "Amt."
+msgstr "кол-во"
+
+#: core/templates/core/feeding_list.html:82
+msgid "No feedings found."
+msgstr "Не найдено записей о кормлении."
+
+#: core/templates/core/note_confirm_delete.html:4
+msgid "Delete a Note"
+msgstr "Удалить заметку"
+
+#: core/templates/core/note_form.html:6
+msgid "Update a Note"
+msgstr "Изменить заметку"
+
+#: core/templates/core/note_form.html:8 core/templates/core/note_form.html:27
+msgid "Add a Note"
+msgstr "Добавить заметку"
+
+#: core/templates/core/note_list.html:64
+msgid "No notes found."
+msgstr "Не найдено заметок."
+
+#: core/templates/core/sleep_confirm_delete.html:4
+msgid "Delete a Sleep Entry"
+msgstr "Удалить запись сна"
+
+#: core/templates/core/sleep_form.html:6
+msgid "Update a Sleep Entry"
+msgstr "Изменить запись о сне"
+
+#: core/templates/core/sleep_form.html:8 core/templates/core/sleep_form.html:27
+msgid "Add a Sleep Entry"
+msgstr "Добавить сон"
+
+#: core/templates/core/sleep_list.html:25
+#: core/templates/core/timer_form.html:12
+#: core/templates/core/timer_list.html:24
+#: core/templates/core/tummytime_list.html:24
+msgid "Start"
+msgstr "Начало"
+
+#: core/templates/core/sleep_list.html:26
+#: core/templates/core/timer_list.html:30
+#: core/templates/core/tummytime_list.html:25
+msgid "End"
+msgstr "Конец"
+
+#: core/templates/core/sleep_list.html:31
+msgid "Nap"
+msgstr "Поспал"
+
+#: core/templates/core/sleep_list.html:74
+msgid "No sleep entries found."
+msgstr "Не найдено записей о сне."
+
+#: core/templates/core/timer_confirm_delete.html:5
+msgid "Delete %(object)s"
+msgstr "Удалить %(object)s"
+
+#: core/templates/core/timer_detail.html:28
+msgid "Started"
+msgstr ""
+
+#: core/templates/core/timer_detail.html:30
+msgid "Stopped"
+msgstr "Остановлен"
+
+#: core/templates/core/timer_detail.html:26
+msgid "%(timer)s created by %(object.user)s"
+msgstr "%(timer)s создан %(object.user)s"
+
+#: core/templates/core/timer_detail.html:63
+msgid "Timer actions"
+msgstr ""
+
+#: core/templates/core/timer_form.html:22
+#: core/templates/core/timer_list.html:15 core/templates/core/timer_nav.html:23
+msgid "Start Timer"
+msgstr ""
+
+#: core/templates/core/timer_list.html:58
+msgid "No timer entries found."
+msgstr "Нет таймеров."
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:32
+#: core/templates/core/timer_nav.html:18
+msgid "Quick Start Timer"
+msgstr ""
+
+#: core/templates/core/timer_nav.html:28
+msgid "View Timers"
+msgstr "Просмотр таймеров"
+
+#: core/templates/core/timer_nav.html:32
+#: dashboard/templates/cards/timer_list.html:6
+msgid "Active Timers"
+msgstr "Активные таймеры"
+
+#: core/templates/core/timer_nav.html:38
+#: dashboard/templates/cards/diaperchange_last.html:17
+#: dashboard/templates/cards/diaperchange_types.html:12
+#: dashboard/templates/cards/feeding_day.html:20
+#: dashboard/templates/cards/feeding_day.html:52
+#: dashboard/templates/cards/feeding_last.html:17
+#: dashboard/templates/cards/feeding_last_method.html:43
+#: dashboard/templates/cards/sleep_day.html:14
+#: dashboard/templates/cards/sleep_last.html:17
+#: dashboard/templates/cards/sleep_naps_day.html:18
+#: dashboard/templates/cards/tummytime_day.html:14
+msgid "None"
+msgstr "Нет"
+
+#: core/templates/core/tummytime_confirm_delete.html:4
+msgid "Delete a Tummy Time Entry"
+msgstr "Удалить запись времени на животике"
+
+#: core/templates/core/tummytime_form.html:6
+msgid "Update a Tummy Time Entry"
+msgstr "Изменить время на животике"
+
+#: core/templates/core/tummytime_form.html:8
+#: core/templates/core/tummytime_form.html:27
+msgid "Add a Tummy Time Entry"
+msgstr "Добавить запись времени на животике"
+
+#: core/templates/core/tummytime_list.html:67
+msgid "No tummy time entries found."
+msgstr "Не найдено записей о времени на животике."
+
+#: core/templates/core/weight_confirm_delete.html:4
+msgid "Delete a Weight Entry"
+msgstr "Удалить запись веса"
+
+#: core/templates/core/weight_form.html:8
+#: core/templates/core/weight_form.html:17
+#: core/templates/core/weight_form.html:27
+msgid "Add a Weight Entry"
+msgstr "Добавить измерение веса"
+
+#: core/templates/core/weight_list.html:70
+msgid "No weight entries found."
+msgstr "Не найдены результаты взвешивания."
+
+#: core/timeline.py:164
+msgid "%(child)s had a diaper change."
+msgstr "%(child)s поменялся подгузник."
+
+#: core/timeline.py:145
+msgid "%(child)s started feeding."
+msgstr "%(child)s начал кушать."
+
+#: core/timeline.py:158
+msgid "%(child)s finished feeding."
+msgstr "%(child)s закончил кушать."
+
+#: core/timeline.py:91
+msgid "%(child)s fell asleep."
+msgstr "%(child)s уснул."
+
+#: core/timeline.py:103
+msgid "%(child)s woke up."
+msgstr "%(child)s проснулся."
+
+#: core/timeline.py:53
+msgid "%(child)s started tummy time!"
+msgstr "%(child)s лёг на животик!"
+
+#: core/timeline.py:65
+msgid "%(child)s finished tummy time."
+msgstr "%(child)s закончил лежать на животике."
+
+#: core/views.py:33
+msgid "%(model)s entry for %(child)s added!"
+msgstr "Значения %(model)s добавлены!"
+
+#: core/views.py:35 core/views.py:308
+msgid "%(model)s entry added!"
+msgstr "%(model)s запись добавлена!"
+
+#: core/views.py:61 core/views.py:316
+msgid "%(model)s entry for %(child)s updated."
+msgstr "Значения %(model)s для %(child)s обновлены."
+
+#: core/views.py:63
+msgid "%(model)s entry updated."
+msgstr "Значения %(model)s обновлены."
+
+#: core/views.py:115
+msgid "%(first_name)s %(last_name)s added!"
+msgstr "Ребёнок %(first_name)s %(last_name)s добавлен!"
+
+#: core/views.py:478
+msgid "%(timer)s stopped."
+msgstr "%(timer)s остановлен."
+
+#: dashboard/templates/cards/diaperchange_last.html:6
+msgid "Last Diaper Change"
+msgstr "Последнй раз подгузник менялся"
+
+#: dashboard/templates/cards/diaperchange_last.html:8
+#: dashboard/templates/cards/feeding_last.html:8
+#: dashboard/templates/cards/sleep_last.html:8
+#: dashboard/templates/cards/tummytime_last.html:8
+msgid "%(time)s ago"
+msgstr "%(time)s назад"
+
+#: dashboard/templates/cards/tummytime_last.html:18
+msgid "Never"
+msgstr "Никогда"
+
+#: dashboard/templates/cards/diaperchange_types.html:14
+msgid "Past Week"
+msgstr "Прошая неделя"
+
+#: dashboard/templates/cards/diaperchange_types.html:27
+msgid "wet"
+msgstr "жидкий"
+
+#: dashboard/templates/cards/diaperchange_types.html:35
+msgid "solid"
+msgstr "твёрдый"
+
+#: dashboard/templates/cards/diaperchange_types.html:49
+msgid "today"
+msgstr "сегодня"
+
+#: dashboard/templates/cards/diaperchange_types.html:51
+msgid "yesterday"
+msgstr "вчера"
+
+#: dashboard/templates/cards/diaperchange_types.html:53
+msgid "%(key)s days ago"
+msgstr "%(key)s дней тому назад"
+
+#: dashboard/templates/cards/feeding_last.html:6
+msgid "Last Feeding"
+msgstr "Последний раз кушал"
+
+#: dashboard/templates/cards/feeding_last_method.html:6
+msgid "Last Feeding Method"
+msgstr "Последний способ кормления"
+
+#: dashboard/templates/cards/sleep_day.html:6
+msgid "Today's Sleep"
+msgstr "Спал сегодня"
+
+#: dashboard/templates/cards/sleep_day.html:11
+#: dashboard/templates/cards/sleep_naps_day.html:13
+#: dashboard/templates/cards/tummytime_day.html:11
+msgid "None yet today"
+msgstr "Сегодня еще небыло"
+
+#: dashboard/templates/cards/sleep_day.html:20
+msgid "%(count)s sleep entries"
+msgstr "%(count)s записей сна"
+
+#: dashboard/templates/cards/sleep_last.html:4
+msgid "Last Slept"
+msgstr "Последний раз спал"
+
+#: dashboard/templates/cards/sleep_naps_day.html:6
+msgid "Today's Naps"
+msgstr "Ложился спать сегодня"
+
+#: dashboard/templates/cards/sleep_naps_day.html:12
+msgid "%(count)s nap%(plural)s"
+msgstr "%(count)s раз ложился спать"
+
+#: dashboard/templates/cards/statistics.html:7
+msgid "Statistics"
+msgstr "Статистика"
+
+#: dashboard/templates/cards/statistics.html:25
+msgid "Not enough data"
+msgstr "Недостаточно данных"
+
+#: dashboard/templates/cards/timer_list.html:12
+msgid "%(count)s active timer%(plural)s"
+msgstr "%(count)s активных таймеров"
+
+#: dashboard/templates/cards/timer_list.html:19
+msgid "Started by %(instance.user)s at %(start)s"
+msgstr ""
+
+#: dashboard/templates/cards/tummytime_day.html:6
+msgid "Today's Tummy Time"
+msgstr "Лежал на а животике сегодня"
+
+#: dashboard/templates/cards/tummytime_day.html:22
+msgid "%(duration)s at %(end)s"
+msgstr " %(duration)s в %(end)s"
+
+#: dashboard/templates/cards/tummytime_last.html:6
+msgid "Last Tummy Time"
+msgstr "Последнее время на животике"
+
+#: dashboard/templates/dashboard/child_button_group.html:3
+msgid "Child actions"
+msgstr "Действия"
+
+#: reports/templates/reports/diaperchange_types.html:4
+#: reports/templates/reports/diaperchange_types.html:8
+#: reports/templates/reports/report_list.html:12
+msgid "Diaper Change Types"
+msgstr "Что было в подгузниках"
+
+#: reports/templates/reports/diaperchange_lifetimes.html:4
+#: reports/templates/reports/diaperchange_lifetimes.html:8
+#: reports/templates/reports/report_list.html:13
+msgid "Diaper Lifetimes"
+msgstr "На сколько хватает подгузника"
+
+#: reports/templates/reports/report_list.html:15
+msgid "Feeding Durations (Average)"
+msgstr "Продолжительность кормления (Средняя)"
+
+#: reports/templates/reports/report_list.html:19
+#: reports/templates/reports/sleep_pattern.html:4
+#: reports/templates/reports/sleep_pattern.html:8
+msgid "Sleep Pattern"
+msgstr "Распорядок сна"
+
+#: reports/templates/reports/report_list.html:20
+#: reports/templates/reports/sleep_totals.html:4
+#: reports/templates/reports/sleep_totals.html:8
+msgid "Sleep Totals"
+msgstr "Сколько спал"
+
+#: dashboard/templatetags/cards.py:420
+msgid "Diaper change frequency"
+msgstr "Частота замены подгузников"
+
+#: dashboard/templatetags/cards.py:466
+msgid "Feeding frequency"
+msgstr "Частота кормлений"
+
+#: dashboard/templatetags/cards.py:328
+msgid "Average nap duration"
+msgstr "Средняя продолжительность сна"
+
+#: dashboard/templatetags/cards.py:335
+msgid "Average naps per day"
+msgstr "Спит в день в среднем"
+
+#: dashboard/templatetags/cards.py:345
+msgid "Average sleep duration"
+msgstr "Средняя продолжительность сна"
+
+#: dashboard/templatetags/cards.py:352
+msgid "Average awake duration"
+msgstr "Средняя продолжительность бодрствования"
+
+#: dashboard/templatetags/cards.py:362
+msgid "Weight change per week"
+msgstr "Изменение веса за неделю"
+
+#: reports/graphs/diaperchange_lifetimes.py:35
+msgid "Diaper Lifetimes"
+msgstr "На сколько хватает подгузника"
+
+#: reports/graphs/diaperchange_lifetimes.py:36
+msgid "Time between changes (hours)"
+msgstr "Время между сменами (часы)"
+
+#: reports/graphs/diaperchange_types.py:41 reports/graphs/feeding_amounts.py:58
+msgid "Total"
+msgstr "Итого"
+
+#: reports/graphs/diaperchange_types.py:48
+msgid "Diaper Change Types"
+msgstr "Что было в подгузниках"
+
+#: reports/graphs/diaperchange_types.py:51
+msgid "Number of changes"
+msgstr "Сколько раз меняли подгузник"
+
+#: reports/graphs/feeding_duration.py:38
+msgid "Average duration"
+msgstr "Средняя продолжительность"
+
+#: reports/graphs/feeding_duration.py:46
+msgid "Total feedings"
+msgstr "Всего кормлений"
+
+#: reports/graphs/feeding_duration.py:55
+msgid "Average Feeding Durations"
+msgstr "Средняя продолжительность кормления "
+
+#: reports/graphs/feeding_duration.py:58
+msgid "Average duration (minutes)"
+msgstr "Средняя продолжительность (минуты)"
+
+#: reports/graphs/feeding_duration.py:60
+msgid "Number of feedings"
+msgstr "Сколько раз кормили"
+
+#: reports/graphs/sleep_pattern.py:148
+msgid "Sleep Pattern"
+msgstr "Распорядок сна"
+
+#: reports/graphs/sleep_pattern.py:165
+msgid "Time of day"
+msgstr "Время дня"
+
+#: reports/graphs/sleep_totals.py:48
+msgid "Total sleep"
+msgstr "Суммарно спал"
+
+#: reports/graphs/sleep_totals.py:58
+msgid "Sleep Totals"
+msgstr "Сколько спал"
+
+#: reports/graphs/sleep_totals.py:61
+msgid "Hours of sleep"
+msgstr "Часов сна"
+
+#: reports/graphs/weight_change.py:27
+msgid "Weight"
+msgstr "Вес"
+
+#: reports/templates/reports/feeding_duration.html:4
+#: reports/templates/reports/feeding_duration.html:8
+msgid "Average Feeding Durations"
+msgstr "Средняя продолжительность кормления"
+
+#: dashboard/templates/dashboard/child_button_group.html:12
+#: reports/templates/reports/base.html:9
+#: reports/templates/reports/report_list.html:4
+msgid "Reports"
+msgstr "Отчеты"
+
+#: reports/templates/reports/report_base.html:19
+msgid "There is no enough data to generate this report."
+msgstr "Данных недостаточно для составления данного отчета."
+
+#: core/models.py:296
+msgid "Both breasts"
+msgstr "Обе груди"
+
+#: babybuddy/settings/base.py:173
+msgid "German"
+msgstr "German"
+
+#: babybuddy/settings/base.py:177
+msgid "Spanish"
+msgstr "Spanish"
+
+#: babybuddy/settings/base.py:178
+msgid "Swedish"
+msgstr "Swedish"
+
+#: babybuddy/settings/base.py:179
+msgid "Turkish"
+msgstr "Turkish"
+
+#: babybuddy/templates/error/403.html:9
+msgid "You do not have permission to access this resource. Contact a site administrator for assistance."
+msgstr "У вас нет разрешения на доступ к этому ресурсу. Обратитесь за помощью к администратору сайта."
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:75
+#: babybuddy/templates/babybuddy/nav-dropdown.html:179 core/models.py:506
+#: core/models.py:519 core/models.py:520 core/models.py:523
+#: core/templates/core/temperature_confirm_delete.html:7
+#: core/templates/core/temperature_form.html:13
+#: core/templates/core/temperature_list.html:4
+#: core/templates/core/temperature_list.html:7
+#: core/templates/core/temperature_list.html:12
+#: core/templates/core/temperature_list.html:29
+msgid "Temperature"
+msgstr "Температура"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:185
+msgid "Temperature reading"
+msgstr "Значение температуры"
+
+#: babybuddy/templates/babybuddy/welcome.html:14
+msgid "Learn about and predict baby's needs without (as much) guess work by using Baby Buddy to track —"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/welcome.html:56
+msgid "As the amount of entries grows, Baby Buddy will help parents and caregivers to identify small patterns in baby's habits using the dashboard and graphs. Baby Buddy is mobile-friendly and uses a dark theme to help weary moms and dads with 2AM feedings and changings. To get started, just click the button below to add your first (or second, third, etc.) child!"
+msgstr "По мере роста количества записей Baby Buddy будет помогать родителям и нянькам находить небольшие закономерности в привычках ребенка с помощью панели и графиков. Baby Buddy подходит для мобильных устройств и использует темную тему, чтобы помочь усталым мамам и папам с кормлением и переодеванием в 2 часа ночи. Чтобы начать, просто нажмите кнопку ниже, чтобы добавить своего первого (или второго, третьего и т. д.) ребенка!"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:13
+msgid "Oh snap! The two passwords did not match. Please try again."
+msgstr ""
+
+#: babybuddy/templates/registration/password_reset_done.html:9
+msgid "We've emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly."
+msgstr "Если адрес правильный - мы отправим вам инструкции по сборосу пароля. Вы должны их получить в ближайшее время."
+
+#: babybuddy/templates/registration/password_reset_done.html:15
+msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder."
+msgstr "Если вы не получили сообщение на email, проверьте корректность ввода адреса при регистрации и еще поищите письмо в папке Спам."
+
+#: babybuddy/templates/registration/password_reset_form.html:9
+msgid "Enter your account email address in the form below. If the address is valid, you will receive instructions for resetting your password."
+msgstr "Введите ваш адрес электронной почты в форму ниже. Если адрес правильный, вы получите инструкции по сбросу пароля."
+
+#: core/models.py:285
+msgid "Fortified breast milk"
+msgstr "Обогащенное грудное молоко"
+
+#: core/templates/core/temperature_confirm_delete.html:4
+msgid "Delete a Temperature Reading"
+msgstr "Удалить запись температуры"
+
+#: core/templates/core/temperature_form.html:8
+#: core/templates/core/temperature_form.html:17
+msgid "Add a Temperature Reading"
+msgstr "Добавить измерение температуры"
+
+#: core/templates/core/temperature_form.html:27
+msgid "Add a Temperature Entry"
+msgstr "Добавить температуру"
+
+#: core/templates/core/temperature_list.html:70
+msgid "No temperature entries found."
+msgstr "Нет измерений температуры."
+
+#: core/templates/core/timer_detail.html:34
+msgid "%(timer)s created by %(user)s"
+msgstr "%(timer)s создан %(user)s"
+
+#: core/utils.py:40
+msgid "%(hours)s hour"
+msgid_plural "%(hours)s hours"
+msgstr[0] "%(hours)s час"
+msgstr[1] "%(hours)s часов"
+msgstr[2] "%(hours)s часов"
+msgstr[3] "%(hours)s часов"
+
+#: core/utils.py:44
+msgid "%(minutes)s minute"
+msgid_plural "%(minutes)s minutes"
+msgstr[0] "%(minutes)s минута"
+msgstr[1] "%(minutes)s минут"
+msgstr[2] "%(minutes)s минут"
+msgstr[3] "%(minutes)s минут"
+
+#: core/utils.py:50
+msgid "%(seconds)s second"
+msgid_plural "%(seconds)s seconds"
+msgstr[0] "%(seconds)s секунда"
+msgstr[1] "%(seconds)s секунд"
+msgstr[2] "%(seconds)s секунд"
+msgstr[3] "%(seconds)s секунд"
+
+#: core/views.py:69 core/views.py:146
+msgid "%(model)s entry deleted."
+msgstr "%(model)s запись удалена."
+
+#: core/views.py:366
+msgid "%(model)s reading added!"
+msgstr "Значения %(model)s добавлены!"
+
+#: core/views.py:374
+msgid "%(model)s reading for %(child)s updated."
+msgstr "Значения %(model)s для %(child)s обновлены."
+
+#: dashboard/templates/cards/timer_list.html:27
+msgid "Started by %(user)s at %(start)s"
+msgstr ""
+
+#: reports/templates/reports/feeding_amounts.html:4
+#: reports/templates/reports/feeding_amounts.html:8
+#: reports/templates/reports/report_list.html:14
+msgid "Feeding Amounts"
+msgstr "Сколько кушал"
+
+#: reports/graphs/feeding_amounts.py:27
+msgid "Total feeding amount"
+msgstr "Сколько кушал"
+
+#: reports/graphs/feeding_amounts.py:36
+msgid "Total Feeding Amounts"
+msgstr "Сколько кушал"
+
+#: reports/graphs/feeding_amounts.py:72
+msgid "Feeding amount"
+msgstr "Сколько раз кушал"
+
+#: reports/templates/reports/report_base.html:17
+msgid "There is not enough data to generate this report."
+msgstr "Недостаточно данных для составления данного отчета."
+
+#: babybuddy/models.py:69
+msgid "Timezone"
+msgstr "Часовой пояс"
+
+#: babybuddy/templates/admin/base_site.html:4
+#: babybuddy/templates/admin/base_site.html:7
+#: babybuddy/templates/babybuddy/nav-dropdown.html:359
+msgid "Database Admin"
+msgstr "Администратор базы данных"
+
+#: core/templates/core/child_list.html:15
+msgid "Add Child"
+msgstr "Добавить ребёнка"
+
+#: core/templates/core/diaperchange_list.html:15
+msgid "Add Diaper Change"
+msgstr "Добавить смену подгузника"
+
+#: core/templates/core/feeding_list.html:15
+msgid "Add Feeding"
+msgstr "Добавить кормление"
+
+#: core/templates/core/note_list.html:15
+msgid "Add Note"
+msgstr "Добавить заметку"
+
+#: core/templates/core/sleep_list.html:15
+msgid "Add Sleep"
+msgstr "Добавить сон"
+
+#: core/templates/core/temperature_list.html:15
+msgid "Add Temperature Reading"
+msgstr "Добавить измерение температуры"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:5
+msgid "Delete All Inactive Timers"
+msgstr "Удалить все неактивные таймеры"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:10
+msgid "Delete Inactive"
+msgstr "Удалить неактивные"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:17
+msgid "Are you sure you want to delete %(number)s inactive timer%(plural)s?"
+msgstr ""
+
+#: core/templates/core/timer_list.html:68
+msgid "Delete Inactive Timers"
+msgstr "Удалить неактивные таймеры"
+
+#: core/templates/core/tummytime_list.html:15
+msgid "Add Tummy Time"
+msgstr "Добавить время на животике"
+
+#: core/templates/core/weight_list.html:15
+msgid "Add Weight"
+msgstr "Добавить вес"
+
+#: core/views.py:501
+msgid "All inactive timers deleted."
+msgstr "Все неактивные таймеры были удалены."
+
+#: core/views.py:511
+msgid "No inactive timers exist."
+msgstr "Нет активных таймеров."
+
+#: dashboard/templates/cards/feeding_last_method.html:19
+msgid "most recent"
+msgstr "последний раз"
+
+#: dashboard/templates/cards/feeding_last_method.html:21
+msgid "%(n)s feeding%(plural)s ago"
+msgstr "%(n)s кормлений назад"
+
+#: dashboard/templates/cards/sleep_last.html:6
+msgid "Last Sleep"
+msgstr "Последний сон"
+
+#: reports/templates/reports/report_list.html:11
+msgid "Diaper Change Amounts"
+msgstr "Сколько подгузников заменено"
+
+#: reports/graphs/diaperchange_amounts.py:27
+msgid "Diaper change amount"
+msgstr "Сколько подгузников заменено"
+
+#: reports/graphs/diaperchange_amounts.py:36
+msgid "Diaper Change Amounts"
+msgstr "Сколько подгузников заменено"
+
+#: reports/graphs/diaperchange_amounts.py:39
+msgid "Change amount"
+msgstr "Переодеваний итого"
+
+#: reports/templates/reports/diaperchange_amounts.html:4
+#: reports/templates/reports/diaperchange_amounts.html:8
+msgid "Diaper Amounts"
+msgstr "Колличетсво подгузников"
+
+#: babybuddy/models.py:21
+msgid "If supported by browser, the dashboard will only refresh when visible, and also when receiving focus."
+msgstr "Если браузером поддерживается, то панель будет обновляться только когда находится в фокусе или на виду."
+
+#: babybuddy/models.py:40
+msgid "Hide Empty Dashboard Cards"
+msgstr "Скрыть пустые карточки"
+
+#: babybuddy/models.py:43
+msgid "Hide data older than"
+msgstr "Скрыть данные старше, чем\\"
+
+#: babybuddy/models.py:45
+msgid "This setting controls which data will be shown in the dashboard."
+msgstr ""
+
+#: babybuddy/models.py:51
+msgid "show all data"
+msgstr ""
+
+#: babybuddy/models.py:52
+msgid "1 day"
+msgstr "1 день"
+
+#: babybuddy/models.py:53
+msgid "2 days"
+msgstr "2 дня"
+
+#: babybuddy/models.py:54
+msgid "3 days"
+msgstr "3 дня"
+
+#: babybuddy/models.py:55
+msgid "1 week"
+msgstr "1 неделя"
+
+#: babybuddy/models.py:56
+msgid "4 weeks"
+msgstr "4 недели"
+
+#: babybuddy/settings/base.py:168
+msgid "Dutch"
+msgstr "Dutch"
+
+#: babybuddy/settings/base.py:172
+msgid "Finnish"
+msgstr "Конец"
+
+#: babybuddy/settings/base.py:174
+msgid "Italian"
+msgstr "Italian"
+
+#: babybuddy/settings/base.py:175
+msgid "Polish"
+msgstr "Polish"
+
+#: babybuddy/settings/base.py:176
+msgid "Portuguese"
+msgstr "Portuguese"
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:118
+#: core/templates/timeline/timeline.html:4
+#: core/templates/timeline/timeline.html:7
+#: dashboard/templates/dashboard/child_button_group.html:9
+msgid "Timeline"
+msgstr "Лента событий"
+
+#: core/models.py:286
+msgid "Solid food"
+msgstr "Твёрдая пища"
+
+#: core/models.py:297
+msgid "Parent fed"
+msgstr "Кормил родитель"
+
+#: core/models.py:298
+msgid "Self fed"
+msgstr "Кушал сам"
+
+#: core/templates/core/diaperchange_list.html:29
+msgid "Contents"
+msgstr "Стул"
+
+#: core/templates/core/timer_detail.html:77
+msgid "Restart timer"
+msgstr "Перезапустить таймер"
+
+#: core/templates/core/timer_detail.html:84
+msgid "Delete timer"
+msgstr "Удалить таймер"
+
+#: core/templatetags/datetime.py:60
+msgid "Today"
+msgstr "Сегодня"
+
+#: core/templatetags/datetime.py:75
+msgid "{}, {}"
+msgstr "{}, {}"
+
+#: core/templatetags/duration.py:25
+msgid "0 days"
+msgstr "0 дней"
+
+#: core/timeline.py:137
+msgid "Amount: %(amount).0f"
+msgstr "Колличество: %(amount).0f "
+
+#: core/timeline.py:157
+msgid "Contents: %(contents)s"
+msgstr "Стул: %(contents)s"
+
+#: dashboard/templates/cards/diaperchange_last.html:12
+#: dashboard/templates/cards/feeding_last.html:12
+#: dashboard/templates/cards/sleep_last.html:12
+#: dashboard/templates/cards/tummytime_last.html:13
+msgid "%(since)s ago
%(time)s"
+msgstr ""
+
+#: dashboard/templates/cards/feeding_day.html:6
+msgid "Today's Feeding"
+msgstr "Кормлений сегодня"
+
+#: dashboard/templates/cards/feeding_day.html:20
+msgid "%(count)s feeding entries"
+msgstr "%(count)s записей кормления"
+
+#: dashboard/templates/cards/statistics.html:42
+msgid "No data yet"
+msgstr "Пока нет данных"
+
+#: reports/templates/reports/report_list.html:21
+msgid "Tummy Time Durations (Sum)"
+msgstr "Время на животике (суммарно)"
+
+#: core/templates/timeline/_timeline.html:61
+#: dashboard/templates/dashboard/child_button_group.html:20
+msgid "Edit"
+msgstr "Правка"
+
+#: dashboard/templatetags/cards.py:456
+msgid "Feeding frequency (past 3 days)"
+msgstr "Частота кормлений (последние 3 дня)"
+
+#: dashboard/templatetags/cards.py:460
+msgid "Feeding frequency (past 2 weeks)"
+msgstr "Частота кормлений (последние 2 недели)"
+
+#: reports/graphs/tummytime_duration.py:34
+msgid "Total duration"
+msgstr "Продолжительность итого"
+
+#: reports/graphs/tummytime_duration.py:41
+#: reports/graphs/tummytime_duration.py:55
+msgid "Number of sessions"
+msgstr "Сколько раз выкладывали"
+
+#: reports/graphs/tummytime_duration.py:50
+msgid "Total Tummy Time Durations"
+msgstr "Сколько лежал на животике"
+
+#: reports/graphs/tummytime_duration.py:53
+msgid "Total duration (minutes)"
+msgstr "Продолжительность итого (минуты)"
+
+#: reports/templates/reports/tummytime_duration.html:4
+#: reports/templates/reports/tummytime_duration.html:8
+msgid "Total Tummy Time Durations"
+msgstr "Сколько лежал на животике"
+
+#: babybuddy/settings/base.py:169
+msgid "English (US)"
+msgstr ""
+
+#: babybuddy/settings/base.py:170
+msgid "English (UK)"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:171
+msgid "Measurements"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:207 core/models.py:369
+#: core/models.py:381 core/models.py:382 core/models.py:385
+#: core/templates/core/height_confirm_delete.html:7
+#: core/templates/core/height_form.html:13
+#: core/templates/core/height_list.html:4
+#: core/templates/core/height_list.html:7
+#: core/templates/core/height_list.html:12
+#: core/templates/core/height_list.html:29 reports/graphs/height_change.py:19
+#: reports/graphs/height_change.py:30
+#: reports/templates/reports/height_change.html:4
+#: reports/templates/reports/height_change.html:8
+#: reports/templates/reports/report_list.html:17
+msgid "Height"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:213
+msgid "Height entry"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:221 core/models.py:338
+#: core/models.py:351 core/models.py:352 core/models.py:355
+#: core/templates/core/head_circumference_confirm_delete.html:7
+#: core/templates/core/head_circumference_form.html:13
+#: core/templates/core/head_circumference_list.html:4
+#: core/templates/core/head_circumference_list.html:7
+#: core/templates/core/head_circumference_list.html:12
+#: core/templates/core/head_circumference_list.html:29
+#: reports/graphs/head_circumference_change.py:19
+#: reports/graphs/head_circumference_change.py:30
+#: reports/templates/reports/head_circumference_change.html:4
+#: reports/templates/reports/head_circumference_change.html:8
+#: reports/templates/reports/report_list.html:16
+msgid "Head Circumference"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:227
+msgid "Head Circumference entry"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:235 core/models.py:139
+#: core/models.py:151 core/models.py:152 core/models.py:155
+#: core/templates/core/bmi_confirm_delete.html:7
+#: core/templates/core/bmi_form.html:13 core/templates/core/bmi_list.html:4
+#: core/templates/core/bmi_list.html:7 core/templates/core/bmi_list.html:12
+#: core/templates/core/bmi_list.html:29 reports/graphs/bmi_change.py:19
+#: reports/graphs/bmi_change.py:30 reports/templates/reports/bmi_change.html:4
+#: reports/templates/reports/bmi_change.html:8
+msgid "BMI"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:241
+msgid "BMI entry"
+msgstr ""
+
+#: core/models.py:452
+msgid "Napping"
+msgstr ""
+
+#: core/templates/core/bmi_confirm_delete.html:4
+msgid "Delete a BMI Entry"
+msgstr ""
+
+#: core/templates/core/bmi_form.html:8 core/templates/core/bmi_form.html:17
+#: core/templates/core/bmi_form.html:27
+msgid "Add a BMI Entry"
+msgstr ""
+
+#: core/templates/core/bmi_list.html:15
+msgid "Add BMI"
+msgstr ""
+
+#: core/templates/core/bmi_list.html:70
+msgid "No bmi entries found."
+msgstr ""
+
+#: core/templates/core/head_circumference_confirm_delete.html:4
+msgid "Delete a Head Circumference Entry"
+msgstr ""
+
+#: core/templates/core/head_circumference_form.html:8
+#: core/templates/core/head_circumference_form.html:17
+#: core/templates/core/head_circumference_form.html:27
+msgid "Add a Head Circumference Entry"
+msgstr ""
+
+#: core/templates/core/head_circumference_list.html:15
+msgid "Add Head Circumference"
+msgstr ""
+
+#: core/templates/core/head_circumference_list.html:70
+msgid "No head circumference entries found."
+msgstr ""
+
+#: core/templates/core/height_confirm_delete.html:4
+msgid "Delete a Height Entry"
+msgstr ""
+
+#: core/templates/core/height_form.html:8
+#: core/templates/core/height_form.html:17
+#: core/templates/core/height_form.html:27
+msgid "Add a Height Entry"
+msgstr ""
+
+#: core/templates/core/height_list.html:15
+msgid "Add Height"
+msgstr ""
+
+#: core/templates/core/height_list.html:70
+msgid "No height entries found."
+msgstr ""
+
+#: core/templates/timeline/_timeline.html:44
+msgid "Duration: %(duration)s"
+msgstr ""
+
+#: core/templates/timeline/_timeline.html:53
+msgid "%(since)s since previous"
+msgstr ""
+
+#: core/templates/timeline/_timeline.html:85
+msgid "No events"
+msgstr ""
+
+#: core/timeline.py:185
+msgid "%(child)s had a %(type)s diaper change."
+msgstr ""
+
+#: dashboard/templatetags/cards.py:372
+msgid "Height change per week"
+msgstr ""
+
+#: dashboard/templatetags/cards.py:382
+msgid "Head circumference change per week"
+msgstr ""
+
+#: dashboard/templatetags/cards.py:392
+msgid "BMI change per week"
+msgstr ""
+
+#: reports/graphs/bmi_change.py:27
+msgid "BMI"
+msgstr ""
+
+#: reports/graphs/feeding_amounts.py:69
+msgid "Total Feeding Amount by Type"
+msgstr ""
+
+#: reports/graphs/head_circumference_change.py:27
+msgid "Head Circumference"
+msgstr ""
+
+#: reports/graphs/height_change.py:27
+msgid "Height"
+msgstr ""
+
+#: babybuddy/settings/base.py:167
+msgid "Chinese (simplified)"
+msgstr ""
+
+#: babybuddy/templates/error/400.html:4 babybuddy/templates/error/400.html:7
+msgid "Bad Request"
+msgstr ""
+
+#: babybuddy/templates/error/403_csrf_bad_origin.html:14
+msgid "How to Fix"
+msgstr ""
+
+#: babybuddy/templates/error/403_csrf_bad_origin.html:15
+msgid "Add %(origin)s to the CSRF_TRUSTED_ORIGINS
environment variable. If multiple origins are required separate with commas."
+msgstr ""
+
+#: babybuddy/templates/error/404.html:4 babybuddy/templates/error/404.html:7
+msgid "Page Not Found"
+msgstr ""
+
+#: babybuddy/templates/error/404.html:9
+msgid "The path %(request_path)s
does not exist."
+msgstr ""
+
+#: babybuddy/templates/error/500.html:4 babybuddy/templates/error/500.html:7
+msgid "Server Error"
+msgstr ""
+
+#: babybuddy/templates/error/base.html:14
+msgid "Return to Baby Buddy"
+msgstr ""
+
+#: babybuddy/views.py:43
+msgid "Forbidden"
+msgstr ""
+
+#: babybuddy/views.py:44
+msgid "CSRF verification failed. Request aborted."
+msgstr ""
+
+#: babybuddy/settings/base.py:166
+msgid "Catalan"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:93
+#: babybuddy/templates/babybuddy/nav-dropdown.html:316 core/models.py:437
+#: core/models.py:438 core/models.py:441
+#: core/templates/core/pumping_confirm_delete.html:7
+#: core/templates/core/pumping_form.html:13
+#: core/templates/core/pumping_list.html:4
+#: core/templates/core/pumping_list.html:7
+#: core/templates/core/pumping_list.html:12
+#: reports/templates/reports/pumping_amounts.html:4
+#: reports/templates/reports/pumping_amounts.html:8
+msgid "Pumping"
+msgstr ""
+
+#: babybuddy/templates/babybuddy/nav-dropdown.html:322
+msgid "Pumping entry"
+msgstr ""
+
+#: core/filters.py:11 core/models.py:96 core/models.py:115
+msgid "Tag"
+msgstr ""
+
+#: core/forms.py:136
+msgid "Click on the tags to add (+) or remove (-) tags or use the text editor to create new tags."
+msgstr ""
+
+#: core/models.py:90
+msgid "Last used"
+msgstr ""
+
+#: core/models.py:97 core/templates/core/bmi_list.html:30
+#: core/templates/core/diaperchange_list.html:32
+#: core/templates/core/feeding_list.html:35
+#: core/templates/core/head_circumference_list.html:30
+#: core/templates/core/height_list.html:30
+#: core/templates/core/note_list.html:30 core/templates/core/sleep_list.html:32
+#: core/templates/core/temperature_list.html:30
+#: core/templates/core/tummytime_list.html:31
+#: core/templates/core/weight_list.html:30
+msgid "Tags"
+msgstr ""
+
+#: core/templates/core/pumping_confirm_delete.html:4
+msgid "Delete a Pumping Entry"
+msgstr ""
+
+#: core/templates/core/pumping_form.html:8
+#: core/templates/core/pumping_form.html:17
+#: core/templates/core/pumping_form.html:27
+msgid "Add a Pumping Entry"
+msgstr ""
+
+#: core/templates/core/pumping_list.html:15
+msgid "Add Pumping Entry"
+msgstr ""
+
+#: core/templates/core/pumping_list.html:66
+msgid "No pumping entries found."
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:22
+msgid "Tag name"
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:27
+msgid "Recently used:"
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:45
+msgctxt "Error modal"
+msgid "Error"
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:50
+msgctxt "Error modal"
+msgid "An error ocurred."
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:51
+msgctxt "Error modal"
+msgid "Invalid tag name."
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:52
+msgctxt "Error modal"
+msgid "Failed to create tag."
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:53
+msgctxt "Error modal"
+msgid "Failed to obtain tag data."
+msgstr ""
+
+#: core/templates/core/widget_tag_editor.html:58
+msgctxt "Error modal"
+msgid "Close"
+msgstr ""
+
+#: dashboard/templates/cards/feeding_day.html:32
+msgid " %(since)s
"
+msgstr ""
+
+#: dashboard/templatetags/cards.py:410
+msgid "Diaper change frequency (past 3 days)"
+msgstr ""
+
+#: dashboard/templatetags/cards.py:414
+msgid "Diaper change frequency (past 2 weeks)"
+msgstr ""
+
+#: reports/graphs/pumping_amounts.py:57
+msgid "Total Pumping Amount"
+msgstr ""
+
+#: reports/graphs/pumping_amounts.py:60
+msgid "Pumping Amount"
+msgstr ""
+
+#: reports/templates/reports/report_list.html:10
+msgid "Body Mass Index (BMI)"
+msgstr ""
+
+#: reports/templates/reports/report_list.html:18
+msgid "Pumping Amounts"
+msgstr ""
+
+#: core/templates/core/timer_confirm_delete_inactive.html:17
+msgid "Are you sure you want to delete %(number)s inactive timer?"
+msgid_plural "Are you sure you want to delete %(number)s inactive timers?"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#: dashboard/templates/cards/feeding_day.html:25
+msgid "%(counter)s feeding"
+msgid_plural "%(counter)s feedings"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#: dashboard/templates/cards/feeding_last_method.html:21
+msgid "%(n)s feeding ago"
+msgid_plural "%(n)s feedings ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#: dashboard/templates/cards/sleep_naps_day.html:12
+msgid "%(count)s nap"
+msgid_plural "%(count)s naps"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#: dashboard/templates/cards/timer_list.html:12
+msgid "%(count)s active timer"
+msgid_plural "%(count)s active timers"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
diff --git a/locale/sv/LC_MESSAGES/django.mo b/locale/sv/LC_MESSAGES/django.mo
index 642de688..f74856d8 100644
Binary files a/locale/sv/LC_MESSAGES/django.mo and b/locale/sv/LC_MESSAGES/django.mo differ
diff --git a/locale/tr/LC_MESSAGES/django.mo b/locale/tr/LC_MESSAGES/django.mo
index 32e5f3d4..d8a3e226 100644
Binary files a/locale/tr/LC_MESSAGES/django.mo and b/locale/tr/LC_MESSAGES/django.mo differ
diff --git a/locale/tr/LC_MESSAGES/django.po b/locale/tr/LC_MESSAGES/django.po
index 5a272a30..9009b446 100644
--- a/locale/tr/LC_MESSAGES/django.po
+++ b/locale/tr/LC_MESSAGES/django.po
@@ -104,7 +104,7 @@ msgstr "Filtre"
#: babybuddy/templates/babybuddy/filter.html:19
msgid "Reset"
-msgstr "Yeniden Başlat"
+msgstr "Sıfırla"
#: babybuddy/templates/babybuddy/filter.html:32
msgid "Filters"
@@ -1731,12 +1731,12 @@ msgstr "Beslenme sıklığı (son 2 hafta)"
#: reports/graphs/tummytime_duration.py:34
msgid "Total duration"
-msgstr "Toplam düre"
+msgstr "Toplam süre"
#: reports/graphs/tummytime_duration.py:41
#: reports/graphs/tummytime_duration.py:55
msgid "Number of sessions"
-msgstr "Session sayısı"
+msgstr "Oturum sayısı"
#: reports/graphs/tummytime_duration.py:50
msgid "Total Tummy Time Durations"
@@ -1752,7 +1752,6 @@ msgid "Total Tummy Time Durations"
msgstr "Toplam Karın Üstü Süresi"
#: babybuddy/settings/base.py:169
-#, fuzzy
msgid "English (US)"
msgstr "İngilizce"
@@ -1763,7 +1762,7 @@ msgstr "İngilizce"
#: babybuddy/templates/babybuddy/nav-dropdown.html:171
msgid "Measurements"
-msgstr ""
+msgstr "Ölçümler"
#: babybuddy/templates/babybuddy/nav-dropdown.html:207 core/models.py:369
#: core/models.py:381 core/models.py:382 core/models.py:385
@@ -1777,14 +1776,12 @@ msgstr ""
#: reports/templates/reports/height_change.html:4
#: reports/templates/reports/height_change.html:8
#: reports/templates/reports/report_list.html:17
-#, fuzzy
msgid "Height"
-msgstr "Ağırlık"
+msgstr "Boy"
#: babybuddy/templates/babybuddy/nav-dropdown.html:213
-#, fuzzy
msgid "Height entry"
-msgstr "Ağırlık girdisi"
+msgstr "Boy verisi"
#: babybuddy/templates/babybuddy/nav-dropdown.html:221 core/models.py:338
#: core/models.py:351 core/models.py:352 core/models.py:355
@@ -1800,7 +1797,7 @@ msgstr "Ağırlık girdisi"
#: reports/templates/reports/head_circumference_change.html:8
#: reports/templates/reports/report_list.html:16
msgid "Head Circumference"
-msgstr ""
+msgstr "Baş Çevresi"
#: babybuddy/templates/babybuddy/nav-dropdown.html:227
msgid "Head Circumference entry"
@@ -1815,84 +1812,75 @@ msgstr ""
#: reports/graphs/bmi_change.py:30 reports/templates/reports/bmi_change.html:4
#: reports/templates/reports/bmi_change.html:8
msgid "BMI"
-msgstr ""
+msgstr "VKI"
#: babybuddy/templates/babybuddy/nav-dropdown.html:241
-#, fuzzy
msgid "BMI entry"
-msgstr "Uyku Girişi"
+msgstr "VKI verisi"
#: core/models.py:452
msgid "Napping"
msgstr ""
#: core/templates/core/bmi_confirm_delete.html:4
-#, fuzzy
msgid "Delete a BMI Entry"
-msgstr "Uyku Girdisi Sil"
+msgstr "VKI Verisi Sil"
#: core/templates/core/bmi_form.html:8 core/templates/core/bmi_form.html:17
#: core/templates/core/bmi_form.html:27
-#, fuzzy
msgid "Add a BMI Entry"
-msgstr "Uyku Girdisi Ekle"
+msgstr "VKI Verisi Ekle"
#: core/templates/core/bmi_list.html:15
msgid "Add BMI"
-msgstr ""
+msgstr "VKI Ekle"
#: core/templates/core/bmi_list.html:70
-#, fuzzy
msgid "No bmi entries found."
msgstr "Zamanlayıcı girdisi bulunamadı"
#: core/templates/core/head_circumference_confirm_delete.html:4
-#, fuzzy
msgid "Delete a Head Circumference Entry"
msgstr "Karın Üstü Uyku Girdisi Sil"
#: core/templates/core/head_circumference_form.html:8
#: core/templates/core/head_circumference_form.html:17
#: core/templates/core/head_circumference_form.html:27
-#, fuzzy
msgid "Add a Head Circumference Entry"
-msgstr "Uyku Girdisi Ekle"
+msgstr "Baş Çevresi Verisi Ekle"
#: core/templates/core/head_circumference_list.html:15
msgid "Add Head Circumference"
-msgstr ""
+msgstr "Baş Çevresi Ekle"
#: core/templates/core/head_circumference_list.html:70
-#, fuzzy
msgid "No head circumference entries found."
-msgstr "Zamanlayıcı girdisi bulunamadı"
+msgstr "Baş çevresi verisi bulunamadı."
#: core/templates/core/height_confirm_delete.html:4
-#, fuzzy
msgid "Delete a Height Entry"
-msgstr "Ağırlık Girdisi Sil"
+msgstr "Boy Verisi Sil"
#: core/templates/core/height_form.html:8
#: core/templates/core/height_form.html:17
#: core/templates/core/height_form.html:27
-#, fuzzy
msgid "Add a Height Entry"
-msgstr "Ağırlık Girdisi Ekle"
+msgstr "Boy Verisi Ekle"
#: core/templates/core/height_list.html:15
#, fuzzy
msgid "Add Height"
-msgstr "Ağırlık Ekle"
+msgstr "Boy Ekle"
#: core/templates/core/height_list.html:70
#, fuzzy
msgid "No height entries found."
-msgstr "Ağırlık girdisi bulunamadı."
+msgstr "Boy verisi bulunamadı."
#: core/templates/timeline/_timeline.html:44
#, fuzzy
msgid "Duration: %(duration)s"
-msgstr "Süre çok uzun."
+msgstr "Süre: %(duration) "
#: core/templates/timeline/_timeline.html:53
msgid "%(since)s since previous"
@@ -1900,7 +1888,7 @@ msgstr ""
#: core/templates/timeline/_timeline.html:85
msgid "No events"
-msgstr ""
+msgstr "Etkinlik yok"
#: core/timeline.py:185
#, fuzzy
@@ -1910,22 +1898,22 @@ msgstr "%(child)s bez değiştirildi."
#: dashboard/templatetags/cards.py:372
#, fuzzy
msgid "Height change per week"
-msgstr "Haftalık ağırlık değişimi"
+msgstr "Haftalık boy değişimi"
#: dashboard/templatetags/cards.py:382
#, fuzzy
msgid "Head circumference change per week"
-msgstr "Haftalık ağırlık değişimi"
+msgstr "Haftalık baş çevresi değişimi"
#: dashboard/templatetags/cards.py:392
#, fuzzy
msgid "BMI change per week"
-msgstr "Haftalık ağırlık değişimi"
+msgstr "Haftalık vki değişimi"
#: reports/graphs/bmi_change.py:27
#, fuzzy
msgid "BMI"
-msgstr "Ağırlık"
+msgstr "VKI"
#: reports/graphs/feeding_amounts.py:69
#, fuzzy
@@ -1934,24 +1922,24 @@ msgstr "Ortalama Beslenme Süreleri"
#: reports/graphs/head_circumference_change.py:27
msgid "Head Circumference"
-msgstr ""
+msgstr "Baş Çevresi"
#: reports/graphs/height_change.py:27
#, fuzzy
msgid "Height"
-msgstr "Ağırlık"
+msgstr "Boy"
#: babybuddy/settings/base.py:167
msgid "Chinese (simplified)"
-msgstr ""
+msgstr "Çince (Basitleştirişmiş)"
#: babybuddy/templates/error/400.html:4 babybuddy/templates/error/400.html:7
msgid "Bad Request"
-msgstr ""
+msgstr "Yanlış İstek"
#: babybuddy/templates/error/403_csrf_bad_origin.html:14
msgid "How to Fix"
-msgstr ""
+msgstr "Nasıl Düzeltilir"
#: babybuddy/templates/error/403_csrf_bad_origin.html:15
msgid "Add %(origin)s to the CSRF_TRUSTED_ORIGINS
environment variable. If multiple origins are required separate with commas."
@@ -1959,7 +1947,7 @@ msgstr ""
#: babybuddy/templates/error/404.html:4 babybuddy/templates/error/404.html:7
msgid "Page Not Found"
-msgstr ""
+msgstr "Sayfa Bulunamadı"
#: babybuddy/templates/error/404.html:9
msgid "The path %(request_path)s
does not exist."
@@ -1967,7 +1955,7 @@ msgstr ""
#: babybuddy/templates/error/500.html:4 babybuddy/templates/error/500.html:7
msgid "Server Error"
-msgstr ""
+msgstr "Sunucu Hatası"
#: babybuddy/templates/error/base.html:14
#, fuzzy
@@ -1976,11 +1964,11 @@ msgstr "Baby Buddy'e Hoşgeldiniz!"
#: babybuddy/views.py:43
msgid "Forbidden"
-msgstr ""
+msgstr "Yasak"
#: babybuddy/views.py:44
msgid "CSRF verification failed. Request aborted."
-msgstr ""
+msgstr "CSRF doğrulama hatası. İstek iptal edildi."
#: babybuddy/settings/base.py:166
msgid "Catalan"
@@ -2006,7 +1994,7 @@ msgstr "Ağırlık girdisi"
#: core/filters.py:11 core/models.py:96 core/models.py:115
msgid "Tag"
-msgstr ""
+msgstr "Etiket"
#: core/forms.py:136
msgid "Click on the tags to add (+) or remove (-) tags or use the text editor to create new tags."
@@ -2015,7 +2003,7 @@ msgstr ""
#: core/models.py:90
#, fuzzy
msgid "Last used"
-msgstr "Soyad"
+msgstr "Son kullanılan"
#: core/models.py:97 core/templates/core/bmi_list.html:30
#: core/templates/core/diaperchange_list.html:32
@@ -2027,7 +2015,7 @@ msgstr "Soyad"
#: core/templates/core/tummytime_list.html:31
#: core/templates/core/weight_list.html:30
msgid "Tags"
-msgstr ""
+msgstr "Etiketler"
#: core/templates/core/pumping_confirm_delete.html:4
#, fuzzy
@@ -2054,31 +2042,31 @@ msgstr "Zamanlayıcı girdisi bulunamadı"
#: core/templates/core/widget_tag_editor.html:22
#, fuzzy
msgid "Tag name"
-msgstr "Soyad"
+msgstr "Etiket adı"
#: core/templates/core/widget_tag_editor.html:27
msgid "Recently used:"
-msgstr ""
+msgstr "En son kullanılan:"
#: core/templates/core/widget_tag_editor.html:45
msgctxt "Error modal"
msgid "Error"
-msgstr ""
+msgstr "Hata"
#: core/templates/core/widget_tag_editor.html:50
msgctxt "Error modal"
msgid "An error ocurred."
-msgstr ""
+msgstr "Hata meydana geldi."
#: core/templates/core/widget_tag_editor.html:51
msgctxt "Error modal"
msgid "Invalid tag name."
-msgstr ""
+msgstr "Geçersiz etiket adı."
#: core/templates/core/widget_tag_editor.html:52
msgctxt "Error modal"
msgid "Failed to create tag."
-msgstr ""
+msgstr "Etiket oluşturulamadı."
#: core/templates/core/widget_tag_editor.html:53
msgctxt "Error modal"
@@ -2088,7 +2076,7 @@ msgstr ""
#: core/templates/core/widget_tag_editor.html:58
msgctxt "Error modal"
msgid "Close"
-msgstr ""
+msgstr "Kapat"
#: dashboard/templates/cards/feeding_day.html:32
msgid " %(since)s
"
@@ -2116,7 +2104,7 @@ msgstr "Beslenmeler"
#: reports/templates/reports/report_list.html:10
msgid "Body Mass Index (BMI)"
-msgstr ""
+msgstr "Vücut Kütle Endeksi (VKI)"
#: reports/templates/reports/report_list.html:18
#, fuzzy
diff --git a/locale/zh/LC_MESSAGES/django.mo b/locale/zh/LC_MESSAGES/django.mo
index f575da3c..8e434b74 100644
Binary files a/locale/zh/LC_MESSAGES/django.mo and b/locale/zh/LC_MESSAGES/django.mo differ
diff --git a/static/babybuddy/js/graph.892add740be5.js b/static/babybuddy/js/graph.73ebfc227cf0.js
similarity index 96%
rename from static/babybuddy/js/graph.892add740be5.js
rename to static/babybuddy/js/graph.73ebfc227cf0.js
index 57f26edf..a180fb15 100644
--- a/static/babybuddy/js/graph.892add740be5.js
+++ b/static/babybuddy/js/graph.73ebfc227cf0.js
@@ -1 +1 @@
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Plotly=t():e.Plotly=t()}(self,function(){return function(){var e={98847:function(e,t,r){"use strict";var n=r(71828),a={"X,X div":'direction:ltr;font-family:"Open Sans",verdana,arial,sans-serif;margin:0;padding:0;',"X input,X button":'font-family:"Open Sans",verdana,arial,sans-serif;',"X input:focus,X button:focus":"outline:none;","X a":"text-decoration:none;","X a:hover":"text-decoration:none;","X .crisp":"shape-rendering:crispEdges;","X .user-select-none":"-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;","X svg":"overflow:hidden;","X svg a":"fill:#447adb;","X svg a:hover":"fill:#3c6dc5;","X .main-svg":"position:absolute;top:0;left:0;pointer-events:none;","X .main-svg .draglayer":"pointer-events:all;","X .cursor-default":"cursor:default;","X .cursor-pointer":"cursor:pointer;","X .cursor-crosshair":"cursor:crosshair;","X .cursor-move":"cursor:move;","X .cursor-col-resize":"cursor:col-resize;","X .cursor-row-resize":"cursor:row-resize;","X .cursor-ns-resize":"cursor:ns-resize;","X .cursor-ew-resize":"cursor:ew-resize;","X .cursor-sw-resize":"cursor:sw-resize;","X .cursor-s-resize":"cursor:s-resize;","X .cursor-se-resize":"cursor:se-resize;","X .cursor-w-resize":"cursor:w-resize;","X .cursor-e-resize":"cursor:e-resize;","X .cursor-nw-resize":"cursor:nw-resize;","X .cursor-n-resize":"cursor:n-resize;","X .cursor-ne-resize":"cursor:ne-resize;","X .cursor-grab":"cursor:-webkit-grab;cursor:grab;","X .modebar":"position:absolute;top:2px;right:2px;","X .ease-bg":"-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s;","X .modebar--hover>:not(.watermark)":"opacity:0;-webkit-transition:opacity .3s ease 0s;-moz-transition:opacity .3s ease 0s;-ms-transition:opacity .3s ease 0s;-o-transition:opacity .3s ease 0s;transition:opacity .3s ease 0s;","X:hover .modebar--hover .modebar-group":"opacity:1;","X .modebar-group":"float:left;display:inline-block;box-sizing:border-box;padding-left:8px;position:relative;vertical-align:middle;white-space:nowrap;","X .modebar-btn":"position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;","X .modebar-btn svg":"position:relative;top:2px;","X .modebar.vertical":"display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;","X .modebar.vertical svg":"top:-1px;","X .modebar.vertical .modebar-group":"display:block;float:none;padding-left:0px;padding-bottom:8px;","X .modebar.vertical .modebar-group .modebar-btn":"display:block;text-align:center;","X [data-title]:before,X [data-title]:after":"position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;","X [data-title]:hover:before,X [data-title]:hover:after":"display:block;opacity:1;","X [data-title]:before":'content:"";position:absolute;background:rgba(0,0,0,0);border:6px solid rgba(0,0,0,0);z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;',"X [data-title]:after":"content:attr(data-title);background:#69738a;color:#fff;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;","X .vertical [data-title]:before,X .vertical [data-title]:after":"top:0%;right:200%;","X .vertical [data-title]:before":"border:6px solid rgba(0,0,0,0);border-left-color:#69738a;margin-top:8px;margin-right:-30px;",Y:'font-family:"Open Sans",verdana,arial,sans-serif;position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;',"Y p":"margin:0;","Y .notifier-note":"min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;","Y .notifier-close":"color:#fff;opacity:.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;","Y .notifier-close:hover":"color:#444;text-decoration:none;cursor:pointer;"};for(var i in a){var o=i.replace(/^,/," ,").replace(/X/g,".js-plotly-plot .plotly").replace(/Y/g,".plotly-notifier");n.addStyleRule(o,a[i])}},98222:function(e,t,r){"use strict";e.exports=r(82887)},27206:function(e,t,r){"use strict";e.exports=r(60822)},5224:function(e,t,r){"use strict";e.exports=r(83832)},59509:function(e,t,r){"use strict";e.exports=r(72201)},49866:function(e,t,r){"use strict";e.exports=r(99442)},19548:function(e,t,r){"use strict";e.exports=r(8729)},61039:function(e,t,r){"use strict";e.exports=r(14382)},24296:function(e,t,r){"use strict";e.exports=r(43102)},58872:function(e,t,r){"use strict";e.exports=r(92165)},65591:function(e,t,r){"use strict";e.exports=r(36071)},69738:function(e,t,r){"use strict";e.exports=r(43905)},92650:function(e,t,r){"use strict";e.exports=r(35902)},73434:function(e,t,r){"use strict";e.exports=r(94507)},760:function(e,t,r){"use strict";var n=r(19548);n.register([r(27206),r(5224),r(58872),r(65591),r(69738),r(92650),r(49866),r(25743),r(6197),r(73434),r(54201),r(98222),r(61039),r(24296),r(66398),r(59509)]),e.exports=n},54201:function(e,t,r){"use strict";e.exports=r(58810)},25743:function(e,t,r){"use strict";e.exports=r(52979)},66398:function(e,t,r){"use strict";e.exports=r(32275)},6197:function(e,t,r){"use strict";e.exports=r(47462)},82884:function(e){"use strict";e.exports=[{path:"",backoff:0},{path:"M-2.4,-3V3L0.6,0Z",backoff:.6},{path:"M-3.7,-2.5V2.5L1.3,0Z",backoff:1.3},{path:"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z",backoff:1.55},{path:"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z",backoff:1.6},{path:"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z",backoff:2},{path:"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z",backoff:0,noRotate:!0},{path:"M2,2V-2H-2V2Z",backoff:0,noRotate:!0}]},50215:function(e,t,r){"use strict";var n=r(82884),a=r(41940),i=r(85555),o=r(44467).templatedArray;r(24695);e.exports=o("annotation",{visible:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},text:{valType:"string",editType:"calc+arraydraw"},textangle:{valType:"angle",dflt:0,editType:"calc+arraydraw"},font:a({editType:"calc+arraydraw",colorEditType:"arraydraw"}),width:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},height:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},align:{valType:"enumerated",values:["left","center","right"],dflt:"center",editType:"arraydraw"},valign:{valType:"enumerated",values:["top","middle","bottom"],dflt:"middle",editType:"arraydraw"},bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},bordercolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},borderpad:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},borderwidth:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},showarrow:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},arrowcolor:{valType:"color",editType:"arraydraw"},arrowhead:{valType:"integer",min:0,max:n.length,dflt:1,editType:"arraydraw"},startarrowhead:{valType:"integer",min:0,max:n.length,dflt:1,editType:"arraydraw"},arrowside:{valType:"flaglist",flags:["end","start"],extras:["none"],dflt:"end",editType:"arraydraw"},arrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},startarrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},arrowwidth:{valType:"number",min:.1,editType:"calc+arraydraw"},standoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},startstandoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},ax:{valType:"any",editType:"calc+arraydraw"},ay:{valType:"any",editType:"calc+arraydraw"},axref:{valType:"enumerated",dflt:"pixel",values:["pixel",i.idRegex.x.toString()],editType:"calc"},ayref:{valType:"enumerated",dflt:"pixel",values:["pixel",i.idRegex.y.toString()],editType:"calc"},xref:{valType:"enumerated",values:["paper",i.idRegex.x.toString()],editType:"calc"},x:{valType:"any",editType:"calc+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calc+arraydraw"},xshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},yref:{valType:"enumerated",values:["paper",i.idRegex.y.toString()],editType:"calc"},y:{valType:"any",editType:"calc+arraydraw"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"auto",editType:"calc+arraydraw"},yshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},clicktoshow:{valType:"enumerated",values:[!1,"onoff","onout"],dflt:!1,editType:"arraydraw"},xclick:{valType:"any",editType:"arraydraw"},yclick:{valType:"any",editType:"arraydraw"},hovertext:{valType:"string",editType:"arraydraw"},hoverlabel:{bgcolor:{valType:"color",editType:"arraydraw"},bordercolor:{valType:"color",editType:"arraydraw"},font:a({editType:"arraydraw"}),editType:"arraydraw"},captureevents:{valType:"boolean",editType:"arraydraw"},editType:"calc",_deprecated:{ref:{valType:"string",editType:"calc"}}})},3749:function(e,t,r){"use strict";var n=r(71828),a=r(89298),i=r(92605).draw;function o(e){var t=e._fullLayout;n.filterVisible(t.annotations).forEach(function(t){var r=a.getFromId(e,t.xref),n=a.getFromId(e,t.yref),i=a.getRefType(t.xref),o=a.getRefType(t.yref);t._extremes={},"range"===i&&l(t,r),"range"===o&&l(t,n)})}function l(e,t){var r,n=t._id,i=n.charAt(0),o=e[i],l=e["a"+i],s=e[i+"ref"],c=e["a"+i+"ref"],u=e["_"+i+"padplus"],f=e["_"+i+"padminus"],d={x:1,y:-1}[i]*e[i+"shift"],h=3*e.arrowsize*e.arrowwidth||0,p=h+d,y=h-d,v=3*e.startarrowsize*e.arrowwidth||0,g=v+d,m=v-d;if(c===s){var x=a.findExtremes(t,[t.r2c(o)],{ppadplus:p,ppadminus:y}),b=a.findExtremes(t,[t.r2c(l)],{ppadplus:Math.max(u,g),ppadminus:Math.max(f,m)});r={min:[x.min[0],b.min[0]],max:[x.max[0],b.max[0]]}}else g=l?g+l:g,m=l?m-l:m,r=a.findExtremes(t,[t.r2c(o)],{ppadplus:Math.max(u,p,g),ppadminus:Math.max(f,y,m)});e._extremes[n]=r}e.exports=function(e){var t=e._fullLayout;if(n.filterVisible(t.annotations).length&&e._fullData.length)return n.syncOrAsync([i,o],e)}},44317:function(e,t,r){"use strict";var n=r(71828),a=r(73972),i=r(44467).arrayEditor;function o(e,t){var r,n,a,i,o,s,c,u=e._fullLayout.annotations,f=[],d=[],h=[],p=(t||[]).length;for(r=0;r0||r.explicitOff.length>0},onClick:function(e,t){var r,l,s=o(e,t),c=s.on,u=s.off.concat(s.explicitOff),f={},d=e._fullLayout.annotations;if(!c.length&&!u.length)return;for(r=0;r2/3?"right":"center"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[t]}for(var G=!1,W=["x","y"],J=0;J1)&&(ne===re?((he=ae.r2fraction(t["a"+te]))<0||he>1)&&(G=!0):G=!0),X=ae._offset+ae.r2p(t[te]),Q=.5}else{var pe="domain"===de;"x"===te?($=t[te],X=pe?ae._offset+ae._length*$:X=k.l+k.w*$):($=1-t[te],X=pe?ae._offset+ae._length*$:X=k.t+k.h*$),Q=t.showarrow?.5:$}if(t.showarrow){fe.head=X;var ye=t["a"+te];if(ee=oe*Y(.5,t.xanchor)-le*Y(.5,t.yanchor),ne===re){var ve=s.getRefType(ne);"domain"===ve?("y"===te&&(ye=1-ye),fe.tail=ae._offset+ae._length*ye):"paper"===ve?"y"===te?(ye=1-ye,fe.tail=k.t+k.h*ye):fe.tail=k.l+k.w*ye:fe.tail=ae._offset+ae.r2p(ye),K=ee}else fe.tail=X+ye,K=ee+ye;fe.text=fe.tail+ee;var ge=w["x"===te?"width":"height"];if("paper"===re&&(fe.head=o.constrain(fe.head,1,ge-1)),"pixel"===ne){var me=-Math.max(fe.tail-3,fe.text),xe=Math.min(fe.tail+3,fe.text)-ge;me>0?(fe.tail+=me,fe.text+=me):xe>0&&(fe.tail-=xe,fe.text-=xe)}fe.tail+=ue,fe.head+=ue}else K=ee=se*Y(Q,ce),fe.text=X+ee;fe.text+=ue,ee+=ue,K+=ue,t["_"+te+"padplus"]=se/2+K,t["_"+te+"padminus"]=se/2-K,t["_"+te+"size"]=se,t["_"+te+"shift"]=ee}if(G)z.remove();else{var be=0,_e=0;if("left"!==t.align&&(be=(M-b)*("center"===t.align?.5:1)),"top"!==t.valign&&(_e=(I-_)*("middle"===t.valign?.5:1)),f)n.select("svg").attr({x:j+be-1,y:j+_e}).call(u.setClipUrl,U?O:null,e);else{var we=j+_e-y.top,ke=j+be-y.left;V.call(d.positionText,ke,we).call(u.setClipUrl,U?O:null,e)}H.select("rect").call(u.setRect,j,j,M,I),B.call(u.setRect,N/2,N/2,F-N,q-N),z.call(u.setTranslate,Math.round(C.x.text-F/2),Math.round(C.y.text-q/2)),E.attr({transform:"rotate("+D+","+C.x.text+","+C.y.text+")"});var Te,Me=function(r,n){P.selectAll(".annotation-arrow-g").remove();var s=C.x.head,f=C.y.head,d=C.x.tail+r,h=C.y.tail+n,y=C.x.text+r,b=C.y.text+n,_=o.rotationXYMatrix(D,y,b),w=o.apply2DTransform(_),M=o.apply2DTransform2(_),O=+B.attr("width"),R=+B.attr("height"),I=y-.5*O,N=I+O,F=b-.5*R,j=F+R,U=[[I,F,I,j],[I,j,N,j],[N,j,N,F],[N,F,I,F]].map(M);if(!U.reduce(function(e,t){return e^!!o.segmentsIntersect(s,f,s+1e6,f+1e6,t[0],t[1],t[2],t[3])},!1)){U.forEach(function(e){var t=o.segmentsIntersect(d,h,s,f,e[0],e[1],e[2],e[3]);t&&(d=t.x,h=t.y)});var H=t.arrowwidth,q=t.arrowcolor,Y=t.arrowside,V=P.append("g").style({opacity:c.opacity(q)}).classed("annotation-arrow-g",!0),Z=V.append("path").attr("d","M"+d+","+h+"L"+s+","+f).style("stroke-width",H+"px").call(c.stroke,c.rgb(q));if(v(Z,Y,t),T.annotationPosition&&Z.node().parentNode&&!i){var G=s,W=f;if(t.standoff){var J=Math.sqrt(Math.pow(s-d,2)+Math.pow(f-h,2));G+=t.standoff*(d-s)/J,W+=t.standoff*(h-f)/J}var X,K,$=V.append("path").classed("annotation-arrow",!0).classed("anndrag",!0).classed("cursor-move",!0).attr({d:"M3,3H-3V-3H3ZM0,0L"+(d-G)+","+(h-W),transform:l(G,W)}).style("stroke-width",H+6+"px").call(c.stroke,"rgba(0,0,0,0)").call(c.fill,"rgba(0,0,0,0)");p.init({element:$.node(),gd:e,prepFn:function(){var e=u.getTranslate(z);X=e.x,K=e.y,g&&g.autorange&&A(g._name+".autorange",!0),x&&x.autorange&&A(x._name+".autorange",!0)},moveFn:function(e,r){var n=w(X,K),a=n[0]+e,i=n[1]+r;z.call(u.setTranslate,a,i),S("x",m(g,e,"x",k,t)),S("y",m(x,r,"y",k,t)),t.axref===t.xref&&S("ax",m(g,e,"ax",k,t)),t.ayref===t.yref&&S("ay",m(x,r,"ay",k,t)),V.attr("transform",l(e,r)),E.attr({transform:"rotate("+D+","+a+","+i+")"})},doneFn:function(){a.call("_guiRelayout",e,L());var t=document.querySelector(".js-notes-box-panel");t&&t.redraw(t.selectedObj)}})}}};if(t.showarrow&&Me(0,0),R)p.init({element:z.node(),gd:e,prepFn:function(){Te=E.attr("transform")},moveFn:function(e,r){var n="pointer";if(t.showarrow)t.axref===t.xref?S("ax",m(g,e,"ax",k,t)):S("ax",t.ax+e),t.ayref===t.yref?S("ay",m(x,r,"ay",k.w,t)):S("ay",t.ay+r),Me(e,r);else{if(i)return;var a,o;if(g)a=m(g,e,"x",k,t);else{var s=t._xsize/k.w,c=t.x+(t._xshift-t.xshift)/k.w-s/2;a=p.align(c+e/k.w,s,0,1,t.xanchor)}if(x)o=m(x,r,"y",k,t);else{var u=t._ysize/k.h,f=t.y-(t._yshift+t.yshift)/k.h-u/2;o=p.align(f-r/k.h,u,0,1,t.yanchor)}S("x",a),S("y",o),g&&x||(n=p.getCursor(g?.5:a,x?.5:o,t.xanchor,t.yanchor))}E.attr({transform:l(e,r)+Te}),h(z,n)},clickFn:function(r,n){t.captureevents&&e.emit("plotly_clickannotation",Z(n))},doneFn:function(){h(z),a.call("_guiRelayout",e,L());var t=document.querySelector(".js-notes-box-panel");t&&t.redraw(t.selectedObj)}})}}}e.exports={draw:function(e){var t=e._fullLayout;t._infolayer.selectAll(".annotation").remove();for(var r=0;r=0,x=t.indexOf("end")>=0,b=p.backoff*v+r.standoff,_=y.backoff*g+r.startstandoff;if("line"===h.nodeName){o={x:+e.attr("x1"),y:+e.attr("y1")},u={x:+e.attr("x2"),y:+e.attr("y2")};var w=o.x-u.x,k=o.y-u.y;if(d=(f=Math.atan2(k,w))+Math.PI,b&&_&&b+_>Math.sqrt(w*w+k*k))return void R();if(b){if(b*b>w*w+k*k)return void R();var T=b*Math.cos(f),M=b*Math.sin(f);u.x+=T,u.y+=M,e.attr({x2:u.x,y2:u.y})}if(_){if(_*_>w*w+k*k)return void R();var A=_*Math.cos(f),S=_*Math.sin(f);o.x-=A,o.y-=S,e.attr({x1:o.x,y1:o.y})}}else if("path"===h.nodeName){var L=h.getTotalLength(),O="";if(L1){c=!0;break}}c?e.fullLayout._infolayer.select(".annotation-"+e.id+'[data-index="'+l+'"]').remove():(s._pdata=a(e.glplot.cameraParams,[t.xaxis.r2l(s.x)*r[0],t.yaxis.r2l(s.y)*r[1],t.zaxis.r2l(s.z)*r[2]]),n(e.graphDiv,s,l,e.id,s._xa,s._ya))}}},2468:function(e,t,r){"use strict";var n=r(73972),a=r(71828);e.exports={moduleType:"component",name:"annotations3d",schema:{subplots:{scene:{annotations:r(26997)}}},layoutAttributes:r(26997),handleDefaults:r(20226),includeBasePlot:function(e,t){var r=n.subplotsRegistry.gl3d;if(!r)return;for(var i=r.attrRegex,o=Object.keys(e),l=0;l=0))return e;if(3===o)n[o]>1&&(n[o]=1);else if(n[o]>=1)return e}var l=Math.round(255*n[0])+", "+Math.round(255*n[1])+", "+Math.round(255*n[2]);return i?"rgba("+l+", "+n[3]+")":"rgb("+l+")"}o.tinyRGB=function(e){var t=e.toRgb();return"rgb("+Math.round(t.r)+", "+Math.round(t.g)+", "+Math.round(t.b)+")"},o.rgb=function(e){return o.tinyRGB(n(e))},o.opacity=function(e){return e?n(e).getAlpha():0},o.addOpacity=function(e,t){var r=n(e).toRgb();return"rgba("+Math.round(r.r)+", "+Math.round(r.g)+", "+Math.round(r.b)+", "+t+")"},o.combine=function(e,t){var r=n(e).toRgb();if(1===r.a)return n(e).toRgbString();var a=n(t||c).toRgb(),i=1===a.a?a:{r:255*(1-a.a)+a.r*a.a,g:255*(1-a.a)+a.g*a.a,b:255*(1-a.a)+a.b*a.a},o={r:i.r*(1-r.a)+r.r*r.a,g:i.g*(1-r.a)+r.g*r.a,b:i.b*(1-r.a)+r.b*r.a};return n(o).toRgbString()},o.contrast=function(e,t,r){var a=n(e);return 1!==a.getAlpha()&&(a=n(o.combine(e,c))),(a.isDark()?t?a.lighten(t):c:r?a.darken(r):s).toString()},o.stroke=function(e,t){var r=n(t);e.style({stroke:o.tinyRGB(r),"stroke-opacity":r.getAlpha()})},o.fill=function(e,t){var r=n(t);e.style({fill:o.tinyRGB(r),"fill-opacity":r.getAlpha()})},o.clean=function(e){if(e&&"object"==typeof e){var t,r,n,a,l=Object.keys(e);for(t=0;t0?n>=s:n<=s));a++)n>u&&n0?n>=s:n<=s));a++)n>r[0]&&n1){var ce=Math.pow(10,Math.floor(Math.log(se)/Math.LN10));oe*=ce*c.roundUp(se/ce,[2,5,10]),(Math.abs(Y.start)/Y.size+1e-6)%1<2e-6&&(ae.tick0=0)}ae.dtick=oe}ae.domain=o?[re+P/z.h,re+K-P/z.h]:[re+D/z.w,re+K-D/z.w],ae.setScale(),e.attr("transform",u(Math.round(z.l),Math.round(z.t)));var ue,fe=e.select("."+M.cbtitleunshift).attr("transform",u(-Math.round(z.l),-Math.round(z.t))),de=ae.ticklabelposition,he=ae.title.font.size,pe=e.select("."+M.cbaxis),ye=0,ve=0;function ge(n,a){var i={propContainer:ae,propName:t._propPrefix+"title",traceIndex:t._traceIndex,_meta:t._meta,placeholder:I._dfltTitle.colorbar,containerGroup:e.select("."+M.cbtitle)},o="h"===n.charAt(0)?n.substr(1):"h"+n;e.selectAll("."+o+",."+o+"-math-group").remove(),y.draw(r,n,f(i,a||{}))}return c.syncOrAsync([i.previousPromises,function(){var e,t;(o&&ie||!o&&!ie)&&("top"===B&&(e=D+z.l+z.w*E,t=P+z.t+z.h*(1-re-K)+3+.75*he),"bottom"===B&&(e=D+z.l+z.w*E,t=P+z.t+z.h*(1-re)-3-.25*he),"right"===B&&(t=P+z.t+z.h*R+3+.75*he,e=D+z.l+z.w*re),ge(ae._id+"title",{attributes:{x:e,y:t,"text-anchor":o?"start":"middle"}}))},function(){if(!o&&!ie||o&&ie){var i,s=e.select("."+M.cbtitle),f=s.select("text"),d=[-A/2,A/2],p=s.select(".h"+ae._id+"title-math-group").node(),y=15.6;if(f.node()&&(y=parseInt(f.node().style.fontSize,10)*w),p?(i=h.bBox(p),ve=i.width,(ye=i.height)>y&&(d[1]-=(ye-y)/2)):f.node()&&!f.classed(M.jsPlaceholder)&&(i=h.bBox(f.node()),ve=i.width,ye=i.height),o){if(ye){if(ye+=5,"top"===B)ae.domain[1]-=ye/z.h,d[1]*=-1;else{ae.domain[0]+=ye/z.h;var g=v.lineCount(f);d[1]+=(1-g)*y}s.attr("transform",u(d[0],d[1])),ae.setScale()}}else ve&&("right"===B&&(ae.domain[0]+=(ve+he/2)/z.w),s.attr("transform",u(d[0],d[1])),ae.setScale())}e.selectAll("."+M.cbfills+",."+M.cblines).attr("transform",o?u(0,Math.round(z.h*(1-ae.domain[1]))):u(Math.round(z.w*ae.domain[0]),0)),pe.attr("transform",o?u(0,Math.round(-z.t)):u(Math.round(-z.l),0));var m=e.select("."+M.cbfills).selectAll("rect."+M.cbfill).attr("style","").data(Z);m.enter().append("rect").classed(M.cbfill,!0).style("stroke","none"),m.exit().remove();var x=U.map(ae.c2p).map(Math.round).sort(function(e,t){return e-t});m.each(function(e,i){var l=[0===i?U[0]:(Z[i]+Z[i-1])/2,i===Z.length-1?U[1]:(Z[i]+Z[i+1])/2].map(ae.c2p).map(Math.round);o&&(l[1]=c.constrain(l[1]+(l[1]>l[0])?1:-1,x[0],x[1]));var s=n.select(this).attr(o?"x":"y",$).attr(o?"y":"x",n.min(l)).attr(o?"width":"height",Math.max(W,2)).attr(o?"height":"width",Math.max(n.max(l)-n.min(l),2));if(t._fillgradient)h.gradient(s,r,t._id,o?"vertical":"horizontalreversed",t._fillgradient,"fill");else{var u=q(e).replace("e-","");s.attr("fill",a(u).toHexString())}});var b=e.select("."+M.cblines).selectAll("path."+M.cbline).data(F.color&&F.width?G:[]);b.enter().append("path").classed(M.cbline,!0),b.exit().remove(),b.each(function(e){var t=$,r=Math.round(ae.c2p(e))+F.width/2%1;n.select(this).attr("d","M"+(o?t+","+r:r+","+t)+(o?"h":"v")+W).call(h.lineGroupStyle,F.width,H(e),F.dash)}),pe.selectAll("g."+ae._id+"tick,path").remove();var _=$+W+(A||0)/2-("outside"===t.ticks?1:0),k=l.calcTicks(ae),T=l.getTickSigns(ae)[2];return l.drawTicks(r,ae,{vals:"inside"===ae.ticks?l.clipEnds(ae,k):k,layer:pe,path:l.makeTickPath(ae,_,T),transFn:l.makeTransTickFn(ae)}),l.drawLabels(r,ae,{vals:k,layer:pe,transFn:l.makeTransTickLabelFn(ae),labelFns:l.makeLabelFns(ae,_)})},function(){if(o&&!ie||!o&&ie){var e,a,i=ae.position||0,l=ae._offset+ae._length/2;if("right"===B)a=l,e=z.l+z.w*i+10+he*(ae.showticklabels?1:.5);else if(e=l,"bottom"===B&&(a=z.t+z.h*i+10+(-1===de.indexOf("inside")?ae.tickfont.size:0)+("intside"!==ae.ticks&&t.ticklen||0)),"top"===B){var s=j.text.split("
").length;a=z.t+z.h*i+10-W-w*he*s}ge((o?"h":"v")+ae._id+"title",{avoid:{selection:n.select(r).selectAll("g."+ae._id+"tick"),side:B,offsetTop:o?0:z.t,offsetLeft:o?z.l:0,maxShift:o?I.width:I.height},attributes:{x:e,y:a,"text-anchor":"middle"},transform:{rotate:o?-90:0,offset:0}})}},i.previousPromises,function(){var n,l=W+A/2;-1===de.indexOf("inside")&&(n=h.bBox(pe.node()),l+=o?n.width:n.height),ue=fe.select("text");var c=0,f=o&&"top"===B,y=!o&&"right"===B,v=0;if(ue.node()&&!ue.classed(M.jsPlaceholder)){var m,x=fe.select(".h"+ae._id+"title-math-group").node();x&&(o&&ie||!o&&!ie)?(n=h.bBox(x),c=n.width,m=n.height):(n=h.bBox(fe.node()),c=n.right-z.l-(o?$:ne),m=n.bottom-z.t-(o?ne:$),o||"top"!==B||(l+=n.height,v=n.height)),y&&(ue.attr("transform",u(c/2+he/2,0)),c*=2),l=Math.max(l,o?c:m)}var b=2*(o?D:P)+l+S+A/2,w=0;!o&&j.text&&"bottom"===C&&R<=0&&(b+=w=b/2,v+=w),I._hColorbarMoveTitle=w,I._hColorbarMoveCBTitle=v;var N=S+A;e.select("."+M.cbbg).attr("x",(o?$:ne)-N/2-(o?D:0)).attr("y",(o?ne:$)-(o?X:P+v-w)).attr(o?"width":"height",Math.max(b-w,2)).attr(o?"height":"width",Math.max(X+N,2)).call(p.fill,L).call(p.stroke,t.bordercolor).style("stroke-width",S);var F=y?Math.max(c-10,0):0;if(e.selectAll("."+M.cboutline).attr("x",(o?$:ne+D)+F).attr("y",(o?ne+P-X:$)+(f?ye:0)).attr(o?"width":"height",Math.max(W,2)).attr(o?"height":"width",Math.max(X-(o?2*P+ye:2*D+F),2)).call(p.stroke,t.outlinecolor).style({fill:"none","stroke-width":A}),e.attr("transform",u(z.l-(o?Q*b:0),z.t-(o?0:(1-ee)*b-v))),!o&&(S||a(L).getAlpha()&&!a.equals(I.paper_bgcolor,L))){var U=pe.selectAll("text"),H=U[0].length,q=e.select("."+M.cbbg).node(),Y=h.bBox(q),V=h.getTranslate(e);U.each(function(e,t){var r=H-1;if(0===t||t===r){var n,a=h.bBox(this),i=h.getTranslate(this);if(t===r){var o=a.right+i.x,l=Y.right+V.x+ne-S-2+E;(n=l-o)>0&&(n=0)}else if(0===t){var s=a.left+i.x,c=Y.left+V.x+ne+S+2;(n=c-s)<0&&(n=0)}n&&(H<3?this.setAttribute("transform","translate("+n+",0) "+this.getAttribute("transform")):this.setAttribute("visibility","hidden"))}})}var Z={},G=k[O],J=T[O],K=k[C],te=T[C],re=b-W;o?("pixels"===d?(Z.y=R,Z.t=X*K,Z.b=X*te):(Z.t=Z.b=0,Z.yt=R+s*K,Z.yb=R-s*te),"pixels"===_?(Z.x=E,Z.l=b*G,Z.r=b*J):(Z.l=re*G,Z.r=re*J,Z.xl=E-g*G,Z.xr=E+g*J)):("pixels"===d?(Z.x=E,Z.l=X*G,Z.r=X*J):(Z.l=Z.r=0,Z.xl=E+s*G,Z.xr=E-s*J),"pixels"===_?(Z.y=1-R,Z.t=b*K,Z.b=b*te):(Z.t=re*K,Z.b=re*te,Z.yt=R-g*K,Z.yb=R+g*te)),i.autoMargin(r,t._id,Z)}],r)}(r,t,e);g&&g.then&&(e._promises||[]).push(g),e._context.edits.colorbarPosition&&function(e,t,r){var n,a,i,l="v"===t.orientation,c=r._fullLayout._size;s.init({element:e.node(),gd:r,prepFn:function(){n=e.attr("transform"),d(e)},moveFn:function(r,o){e.attr("transform",n+u(r,o)),a=s.align((l?t._uFrac:t._vFrac)+r/c.w,l?t._thickFrac:t._lenFrac,0,1,t.xanchor),i=s.align((l?t._vFrac:1-t._uFrac)-o/c.h,l?t._lenFrac:t._thickFrac,0,1,t.yanchor);var f=s.getCursor(a,i,t.xanchor,t.yanchor);d(e,f)},doneFn:function(){if(d(e),void 0!==a&&void 0!==i){var n={};n[t._propPrefix+"x"]=a,n[t._propPrefix+"y"]=i,void 0!==t._traceIndex?o.call("_guiRestyle",r,n,t._traceIndex):o.call("_guiRelayout",r,n)}}})}(r,t,e)}),t.exit().each(function(t){i.autoMargin(e,t._id)}).remove(),t.order()}}},76228:function(e,t,r){"use strict";var n=r(71828);e.exports=function(e){return n.isPlainObject(e.colorbar)}},12311:function(e,t,r){"use strict";e.exports={moduleType:"component",name:"colorbar",attributes:r(63583),supplyDefaults:r(62499),draw:r(98981).draw,hasColorbar:r(76228)}},50693:function(e,t,r){"use strict";var n=r(63583),a=r(30587).counter,i=r(78607),o=r(63282).scales;i(o);function l(e){return"`"+e+"`"}e.exports=function(e,t){e=e||"";var r,i=(t=t||{}).cLetter||"c",s=("onlyIfNumerical"in t?t.onlyIfNumerical:Boolean(e),"noScale"in t?t.noScale:"marker.line"===e),c="showScaleDflt"in t?t.showScaleDflt:"z"===i,u="string"==typeof t.colorscaleDflt?o[t.colorscaleDflt]:null,f=t.editTypeOverride||"",d=e?e+".":"";"colorAttr"in t?(r=t.colorAttr,t.colorAttr):l(d+(r={z:"z",c:"color"}[i]));var h=i+"auto",p=i+"min",y=i+"max",v=i+"mid",g=(l(d+h),l(d+p),l(d+y),{});g[p]=g[y]=void 0;var m={};m[h]=!1;var x={};return"color"===r&&(x.color={valType:"color",arrayOk:!0,editType:f||"style"},t.anim&&(x.color.anim=!0)),x[h]={valType:"boolean",dflt:!0,editType:"calc",impliedEdits:g},x[p]={valType:"number",dflt:null,editType:f||"plot",impliedEdits:m},x[y]={valType:"number",dflt:null,editType:f||"plot",impliedEdits:m},x[v]={valType:"number",dflt:null,editType:"calc",impliedEdits:g},x.colorscale={valType:"colorscale",editType:"calc",dflt:u,impliedEdits:{autocolorscale:!1}},x.autocolorscale={valType:"boolean",dflt:!1!==t.autoColorDflt,editType:"calc",impliedEdits:{colorscale:void 0}},x.reversescale={valType:"boolean",dflt:!1,editType:"plot"},s||(x.showscale={valType:"boolean",dflt:c,editType:"calc"},x.colorbar=n),t.noColorAxis||(x.coloraxis={valType:"subplotid",regex:a("coloraxis"),dflt:null,editType:"calc"}),x}},78803:function(e,t,r){"use strict";var n=r(92770),a=r(71828),i=r(52075).extractOpts;e.exports=function(e,t,r){var o,l=e._fullLayout,s=r.vals,c=r.containerStr,u=c?a.nestedProperty(t,c).get():t,f=i(u),d=!1!==f.auto,h=f.min,p=f.max,y=f.mid,v=function(){return a.aggNums(Math.min,null,s)},g=function(){return a.aggNums(Math.max,null,s)};(void 0===h?h=v():d&&(h=u._colorAx&&n(h)?Math.min(h,v()):v()),void 0===p?p=g():d&&(p=u._colorAx&&n(p)?Math.max(p,g()):g()),d&&void 0!==y&&(p-y>y-h?h=y-(p-y):p-y=0?l.colorscale.sequential:l.colorscale.sequentialminus,f._sync("colorscale",o))}},33046:function(e,t,r){"use strict";var n=r(71828),a=r(52075).hasColorscale,i=r(52075).extractOpts;e.exports=function(e,t){function r(e,t){var r=e["_"+t];void 0!==r&&(e[t]=r)}function o(e,a){var o=a.container?n.nestedProperty(e,a.container).get():e;if(o)if(o.coloraxis)o._colorAx=t[o.coloraxis];else{var l=i(o),s=l.auto;(s||void 0===l.min)&&r(o,a.min),(s||void 0===l.max)&&r(o,a.max),l.autocolorscale&&r(o,"colorscale")}}for(var l=0;l=0;n--,a++){var i=e[n];r[a]=[1-i[0],i[1]]}return r}function p(e,t){t=t||{};for(var r=e.domain,o=e.range,s=o.length,c=new Array(s),u=0;u4/3-l?o:l}},70461:function(e,t,r){"use strict";var n=r(71828),a=[["sw-resize","s-resize","se-resize"],["w-resize","move","e-resize"],["nw-resize","n-resize","ne-resize"]];e.exports=function(e,t,r,i){return e="left"===r?0:"center"===r?1:"right"===r?2:n.constrain(Math.floor(3*e),0,2),t="bottom"===i?0:"middle"===i?1:"top"===i?2:n.constrain(Math.floor(3*t),0,2),a[t][e]}},64505:function(e,t){"use strict";t.selectMode=function(e){return"lasso"===e||"select"===e},t.drawMode=function(e){return"drawclosedpath"===e||"drawopenpath"===e||"drawline"===e||"drawrect"===e||"drawcircle"===e},t.openMode=function(e){return"drawline"===e||"drawopenpath"===e},t.rectMode=function(e){return"select"===e||"drawline"===e||"drawrect"===e||"drawcircle"===e},t.freeMode=function(e){return"lasso"===e||"drawclosedpath"===e||"drawopenpath"===e},t.selectingOrDrawing=function(e){return t.freeMode(e)||t.rectMode(e)}},28569:function(e,t,r){"use strict";var n=r(48956),a=r(57035),i=r(38520),o=r(71828).removeElement,l=r(85555),s=e.exports={};s.align=r(92807),s.getCursor=r(70461);var c=r(26041);function u(){var e=document.createElement("div");e.className="dragcover";var t=e.style;return t.position="fixed",t.left=0,t.right=0,t.top=0,t.bottom=0,t.zIndex=999999999,t.background="none",document.body.appendChild(e),e}function f(e){return n(e.changedTouches?e.changedTouches[0]:e,document.body)}s.unhover=c.wrapped,s.unhoverRaw=c.raw,s.init=function(e){var t,r,n,c,d,h,p,y,v=e.gd,g=1,m=v._context.doubleClickDelay,x=e.element;v._mouseDownTime||(v._mouseDownTime=0),x.style.pointerEvents="all",x.onmousedown=_,i?(x._ontouchstart&&x.removeEventListener("touchstart",x._ontouchstart),x._ontouchstart=_,x.addEventListener("touchstart",_,{passive:!1})):x.ontouchstart=_;var b=e.clampFn||function(e,t,r){return Math.abs(e)m&&(g=Math.max(g-1,1)),v._dragged)e.doneFn&&e.doneFn();else if(e.clickFn&&e.clickFn(g,h),!y){var r;try{r=new MouseEvent("click",t)}catch(e){var n=f(t);(r=document.createEvent("MouseEvents")).initMouseEvent("click",t.bubbles,t.cancelable,t.view,t.detail,t.screenX,t.screenY,n[0],n[1],t.ctrlKey,t.altKey,t.shiftKey,t.metaKey,t.button,t.relatedTarget)}p.dispatchEvent(r)}v._dragging=!1,v._dragged=!1}else v._dragged=!1}},s.coverSlip=u},26041:function(e,t,r){"use strict";var n=r(11086),a=r(79990),i=r(24401).getGraphDiv,o=r(26675),l=e.exports={};l.wrapped=function(e,t,r){(e=i(e))._fullLayout&&a.clear(e._fullLayout._uid+o.HOVERID),l.raw(e,t,r)},l.raw=function(e,t){var r=e._fullLayout,a=e._hoverdata;t||(t={}),t.target&&!e._dragged&&!1===n.triggerHandler(e,"plotly_beforehover",t)||(r._hoverlayer.selectAll("g").remove(),r._hoverlayer.selectAll("line").remove(),r._hoverlayer.selectAll("circle").remove(),e._hoverdata=void 0,t.target&&a&&e.emit("plotly_unhover",{event:t,points:a}))}},79952:function(e,t){"use strict";t.P={valType:"string",values:["solid","dot","dash","longdash","dashdot","longdashdot"],dflt:"solid",editType:"style"},t.u={shape:{valType:"enumerated",values:["","/","\\","x","-","|","+","."],dflt:"",arrayOk:!0,editType:"style"},fillmode:{valType:"enumerated",values:["replace","overlay"],dflt:"replace",editType:"style"},bgcolor:{valType:"color",arrayOk:!0,editType:"style"},fgcolor:{valType:"color",arrayOk:!0,editType:"style"},fgopacity:{valType:"number",editType:"style",min:0,max:1},size:{valType:"number",min:0,dflt:8,arrayOk:!0,editType:"style"},solidity:{valType:"number",min:0,max:1,dflt:.3,arrayOk:!0,editType:"style"},editType:"style"}},91424:function(e,t,r){"use strict";var n=r(39898),a=r(71828),i=a.numberFormat,o=r(92770),l=r(84267),s=r(73972),c=r(7901),u=r(21081),f=a.strTranslate,d=r(63893),h=r(77922),p=r(18783).LINE_SPACING,y=r(37822).DESELECTDIM,v=r(34098),g=r(39984),m=r(23469).appendArrayPointValue,x=e.exports={};function b(e,t,r){var n=t.fillpattern,a=n&&x.getPatternAttr(n.shape,0,"");if(a){var i=x.getPatternAttr(n.bgcolor,0,null),o=x.getPatternAttr(n.fgcolor,0,null),l=n.fgopacity,s=x.getPatternAttr(n.size,0,8),u=x.getPatternAttr(n.solidity,0,.3),f=t.uid;x.pattern(e,"point",r,f,a,s,u,void 0,n.fillmode,i,o,l)}else t.fillcolor&&e.call(c.fill,t.fillcolor)}x.font=function(e,t,r,n){a.isPlainObject(t)&&(n=t.color,r=t.size,t=t.family),t&&e.style("font-family",t),r+1&&e.style("font-size",r+"px"),n&&e.call(c.fill,n)},x.setPosition=function(e,t,r){e.attr("x",t).attr("y",r)},x.setSize=function(e,t,r){e.attr("width",t).attr("height",r)},x.setRect=function(e,t,r,n,a){e.call(x.setPosition,t,r).call(x.setSize,n,a)},x.translatePoint=function(e,t,r,n){var a=r.c2p(e.x),i=n.c2p(e.y);return!!(o(a)&&o(i)&&t.node())&&("text"===t.node().nodeName?t.attr("x",a).attr("y",i):t.attr("transform",f(a,i)),!0)},x.translatePoints=function(e,t,r){e.each(function(e){var a=n.select(this);x.translatePoint(e,a,t,r)})},x.hideOutsideRangePoint=function(e,t,r,n,a,i){t.attr("display",r.isPtWithinRange(e,a)&&n.isPtWithinRange(e,i)?null:"none")},x.hideOutsideRangePoints=function(e,t){if(t._hasClipOnAxisFalse){var r=t.xaxis,a=t.yaxis;e.each(function(t){var i=t[0].trace,o=i.xcalendar,l=i.ycalendar,c=s.traceIs(i,"bar-like")?".bartext":".point,.textpoint";e.selectAll(c).each(function(e){x.hideOutsideRangePoint(e,n.select(this),r,a,o,l)})})}},x.crispRound=function(e,t,r){return t&&o(t)?e._context.staticPlot?t:t<1?1:Math.round(t):r||0},x.singleLineStyle=function(e,t,r,n,a){t.style("fill","none");var i=(((e||[])[0]||{}).trace||{}).line||{},o=r||i.width||0,l=a||i.dash||"";c.stroke(t,n||i.color),x.dashLine(t,l,o)},x.lineGroupStyle=function(e,t,r,a){e.style("fill","none").each(function(e){var i=(((e||[])[0]||{}).trace||{}).line||{},o=t||i.width||0,l=a||i.dash||"";n.select(this).call(c.stroke,r||i.color).call(x.dashLine,l,o)})},x.dashLine=function(e,t,r){r=+r||0,t=x.dashStyle(t,r),e.style({"stroke-dasharray":t,"stroke-width":r+"px"})},x.dashStyle=function(e,t){t=+t||1;var r=Math.max(t,3);return"solid"===e?e="":"dot"===e?e=r+"px,"+r+"px":"dash"===e?e=3*r+"px,"+3*r+"px":"longdash"===e?e=5*r+"px,"+5*r+"px":"dashdot"===e?e=3*r+"px,"+r+"px,"+r+"px,"+r+"px":"longdashdot"===e&&(e=5*r+"px,"+2*r+"px,"+r+"px,"+2*r+"px"),e},x.singleFillStyle=function(e,t){var r=n.select(e.node());b(e,((r.data()[0]||[])[0]||{}).trace||{},t)},x.fillGroupStyle=function(e,t){e.style("stroke-width",0).each(function(e){var r=n.select(this);e[0].trace&&b(r,e[0].trace,t)})};var _=r(90998);x.symbolNames=[],x.symbolFuncs=[],x.symbolBackOffs=[],x.symbolNeedLines={},x.symbolNoDot={},x.symbolNoFill={},x.symbolList=[],Object.keys(_).forEach(function(e){var t=_[e],r=t.n;x.symbolList.push(r,String(r),e,r+100,String(r+100),e+"-open"),x.symbolNames[r]=e,x.symbolFuncs[r]=t.f,x.symbolBackOffs[r]=t.backoff||0,t.needLine&&(x.symbolNeedLines[r]=!0),t.noDot?x.symbolNoDot[r]=!0:x.symbolList.push(r+200,String(r+200),e+"-dot",r+300,String(r+300),e+"-open-dot"),t.noFill&&(x.symbolNoFill[r]=!0)});var w=x.symbolNames.length,k="M0,0.5L0.5,0L0,-0.5L-0.5,0Z";function T(e,t,r,n){var a=e%100;return x.symbolFuncs[a](t,r,n)+(e>=200?k:"")}x.symbolNumber=function(e){if(o(e))e=+e;else if("string"==typeof e){var t=0;e.indexOf("-open")>0&&(t=100,e=e.replace("-open","")),e.indexOf("-dot")>0&&(t+=200,e=e.replace("-dot","")),(e=x.symbolNames.indexOf(e))>=0&&(e+=t)}return e%100>=w||e>=400?0:Math.floor(Math.max(e,0))};var M={x1:1,x2:0,y1:0,y2:0},A={x1:0,x2:0,y1:1,y2:0},S=i("~f"),L={radial:{node:"radialGradient"},radialreversed:{node:"radialGradient",reversed:!0},horizontal:{node:"linearGradient",attrs:M},horizontalreversed:{node:"linearGradient",attrs:M,reversed:!0},vertical:{node:"linearGradient",attrs:A},verticalreversed:{node:"linearGradient",attrs:A,reversed:!0}};x.gradient=function(e,t,r,i,o,s){for(var u=o.length,f=L[i],d=new Array(u),h=0;h=100;var f=ae(e,r),d=G(e,r);t.attr("d",T(u,s,f,d))}var h,p,y,v=!1;if(e.so)y=l.outlierwidth,p=l.outliercolor,h=o.outliercolor;else{var g=(l||{}).width;y=(e.mlw+1||g+1||(e.trace?(e.trace.marker.line||{}).width:0)+1)-1||0,p="mlc"in e?e.mlcc=n.lineScale(e.mlc):a.isArrayOrTypedArray(l.color)?c.defaultLine:l.color,a.isArrayOrTypedArray(o.color)&&(h=c.defaultLine,v=!0),h="mc"in e?e.mcc=n.markerScale(e.mc):o.color||"rgba(0,0,0,0)",n.selectedColorFn&&(h=n.selectedColorFn(e))}if(e.om)t.call(c.stroke,h).style({"stroke-width":(y||1)+"px",fill:"none"});else{t.style("stroke-width",(e.isBlank?0:y)+"px");var m=o.gradient,b=e.mgt;b?v=!0:b=m&&m.type,a.isArrayOrTypedArray(b)&&(b=b[0],L[b]||(b=0));var _=o.pattern,w=_&&x.getPatternAttr(_.shape,e.i,"");if(b&&"none"!==b){var k=e.mgc;k?v=!0:k=m.color;var M=r.uid;v&&(M+="-"+e.i),x.gradient(t,i,M,b,[[0,k],[1,h]],"fill")}else if(w){var A=x.getPatternAttr(_.bgcolor,e.i,null),S=x.getPatternAttr(_.fgcolor,e.i,null),O=_.fgopacity,C=x.getPatternAttr(_.size,e.i,8),D=x.getPatternAttr(_.solidity,e.i,.3),P=e.mcc||a.isArrayOrTypedArray(_.shape)||a.isArrayOrTypedArray(_.bgcolor)||a.isArrayOrTypedArray(_.size)||a.isArrayOrTypedArray(_.solidity),E=r.uid;P&&(E+="-"+e.i),x.pattern(t,"point",i,E,w,C,D,e.mcc,_.fillmode,A,S,O)}else c.fill(t,h);y&&c.stroke(t,p)}},x.makePointStyleFns=function(e){var t={},r=e.marker;return t.markerScale=x.tryColorscale(r,""),t.lineScale=x.tryColorscale(r,"line"),s.traceIs(e,"symbols")&&(t.ms2mrc=v.isBubble(e)?g(e):function(){return(r.size||6)/2}),e.selectedpoints&&a.extendFlat(t,x.makeSelectedPointStyleFns(e)),t},x.makeSelectedPointStyleFns=function(e){var t={},r=e.selected||{},n=e.unselected||{},i=e.marker||{},o=r.marker||{},l=n.marker||{},c=i.opacity,u=o.opacity,f=l.opacity,d=void 0!==u,h=void 0!==f;(a.isArrayOrTypedArray(c)||d||h)&&(t.selectedOpacityFn=function(e){var t=void 0===e.mo?i.opacity:e.mo;return e.selected?d?u:t:h?f:y*t});var p=i.color,v=o.color,g=l.color;(v||g)&&(t.selectedColorFn=function(e){var t=e.mcc||p;return e.selected?v||t:g||t});var m=i.size,x=o.size,b=l.size,_=void 0!==x,w=void 0!==b;return s.traceIs(e,"symbols")&&(_||w)&&(t.selectedSizeFn=function(e){var t=e.mrc||m/2;return e.selected?_?x/2:t:w?b/2:t}),t},x.makeSelectedTextStyleFns=function(e){var t={},r=e.selected||{},n=e.unselected||{},a=e.textfont||{},i=r.textfont||{},o=n.textfont||{},l=a.color,s=i.color,u=o.color;return t.selectedTextColorFn=function(e){var t=e.tc||l;return e.selected?s||t:u||(s?t:c.addOpacity(t,y))},t},x.selectedPointStyle=function(e,t){if(e.size()&&t.selectedpoints){var r=x.makeSelectedPointStyleFns(t),a=t.marker||{},i=[];r.selectedOpacityFn&&i.push(function(e,t){e.style("opacity",r.selectedOpacityFn(t))}),r.selectedColorFn&&i.push(function(e,t){c.fill(e,r.selectedColorFn(t))}),r.selectedSizeFn&&i.push(function(e,n){var i=n.mx||a.symbol||0,o=r.selectedSizeFn(n);e.attr("d",T(x.symbolNumber(i),o,ae(n,t),G(n,t))),n.mrc2=o}),i.length&&e.each(function(e){for(var t=n.select(this),r=0;r0?r:0}x.textPointStyle=function(e,t,r){if(e.size()){var i;if(t.selectedpoints){var o=x.makeSelectedTextStyleFns(t);i=o.selectedTextColorFn}var l=t.texttemplate,s=r._fullLayout;e.each(function(e){var o=n.select(this),c=l?a.extractOption(e,t,"txt","texttemplate"):a.extractOption(e,t,"tx","text");if(c||0===c){if(l){var u=t._module.formatLabels,f=u?u(e,t,s):{},h={};m(h,t,e.i);var p=t._meta||{};c=a.texttemplateString(c,f,s._d3locale,h,e,p)}var y=e.tp||t.textposition,v=D(e,t),g=i?i(e):e.tc||t.textfont.color;o.call(x.font,e.tf||t.textfont.family,v,g).text(c).call(d.convertToTspans,r).call(C,y,v,e.mrc)}else o.remove()})}},x.selectedTextStyle=function(e,t){if(e.size()&&t.selectedpoints){var r=x.makeSelectedTextStyleFns(t);e.each(function(e){var a=n.select(this),i=r.selectedTextColorFn(e),o=e.tp||t.textposition,l=D(e,t);c.fill(a,i);var u=s.traceIs(t,"bar-like");C(a,o,l,e.mrc2||e.mrc,u)})}};var P,E,R=.5;function I(e,t,r){return r&&(e=U(e)),t?N(e[1]):z(e[0])}function z(e){var t=n.round(e,2);return P=t,t}function N(e){var t=n.round(e,2);return E=t,t}function F(e,t,r,n){var a=e[0]-t[0],i=e[1]-t[1],o=r[0]-t[0],l=r[1]-t[1],s=Math.pow(a*a+i*i,R/2),c=Math.pow(o*o+l*l,R/2),u=(c*c*a-s*s*o)*n,f=(c*c*i-s*s*l)*n,d=3*c*(s+c),h=3*s*(s+c);return[[z(t[0]+(d&&u/d)),N(t[1]+(d&&f/d))],[z(t[0]-(h&&u/h)),N(t[1]-(h&&f/h))]]}x.smoothopen=function(e,t){if(e.length<3)return"M"+e.join("L");var r,n="M"+e[0],a=[];for(r=1;r=c||w>=f&&w<=c)&&(k<=d&&k>=u||k>=d&&k<=u)&&(e=[w,k])}return e}x.steps=function(e){var t=j[e]||B;return function(e){for(var r="M"+z(e[0][0])+","+N(e[0][1]),n=e.length,a=1;a=1e4&&(x.savedBBoxes={},H=0),r&&(x.savedBBoxes[r]=v),H++,a.extendFlat({},v)},x.setClipUrl=function(e,t,r){e.attr("clip-path",Y(t,r))},x.getTranslate=function(e){var t=(e[e.attr?"attr":"getAttribute"]("transform")||"").replace(/.*\btranslate\((-?\d*\.?\d*)[^-\d]*(-?\d*\.?\d*)[^\d].*/,function(e,t,r){return[t,r].join(" ")}).split(" ");return{x:+t[0]||0,y:+t[1]||0}},x.setTranslate=function(e,t,r){var n=e.attr?"attr":"getAttribute",a=e.attr?"attr":"setAttribute",i=e[n]("transform")||"";return t=t||0,r=r||0,i=i.replace(/(\btranslate\(.*?\);?)/,"").trim(),i=(i+=f(t,r)).trim(),e[a]("transform",i),i},x.getScale=function(e){var t=(e[e.attr?"attr":"getAttribute"]("transform")||"").replace(/.*\bscale\((\d*\.?\d*)[^\d]*(\d*\.?\d*)[^\d].*/,function(e,t,r){return[t,r].join(" ")}).split(" ");return{x:+t[0]||1,y:+t[1]||1}},x.setScale=function(e,t,r){var n=e.attr?"attr":"getAttribute",a=e.attr?"attr":"setAttribute",i=e[n]("transform")||"";return t=t||1,r=r||1,i=i.replace(/(\bscale\(.*?\);?)/,"").trim(),i=(i+="scale("+t+","+r+")").trim(),e[a]("transform",i),i};var V=/\s*sc.*/;x.setPointGroupScale=function(e,t,r){if(t=t||1,r=r||1,e){var n=1===t&&1===r?"":"scale("+t+","+r+")";e.each(function(){var e=(this.getAttribute("transform")||"").replace(V,"");e=(e+=n).trim(),this.setAttribute("transform",e)})}};var Z=/translate\([^)]*\)\s*$/;function G(e,t){var r;return e&&(r=e.mf),void 0===r&&(r=t.marker&&t.marker.standoff||0),t._geo||t._xA?r:-r}x.setTextPointsScale=function(e,t,r){e&&e.each(function(){var e,a=n.select(this),i=a.select("text");if(i.node()){var o=parseFloat(i.attr("x")||0),l=parseFloat(i.attr("y")||0),s=(a.attr("transform")||"").match(Z);e=1===t&&1===r?[]:[f(o,l),"scale("+t+","+r+")",f(-o,-l)],s&&e.push(s),a.attr("transform",e.join(""))}})},x.getMarkerStandoff=G;var W,J,X,K,$,Q,ee=Math.atan2,te=Math.cos,re=Math.sin;function ne(e,t){var r=t[0],n=t[1];return[r*te(e)-n*re(e),r*re(e)+n*te(e)]}function ae(e,t){var r,n,a=e.ma;void 0===a&&(a=t.marker.angle||0);var i=t.marker.angleref;if("previous"===i||"north"===i){if(t._geo){var l=t._geo.project(e.lonlat);r=l[0],n=l[1]}else{var s=t._xA,c=t._yA;if(!s||!c)return 90;r=s.c2p(e.x),n=c.c2p(e.y)}if(t._geo){var u,f=e.lonlat[0],d=e.lonlat[1],h=t._geo.project([f,d+1e-5]),p=t._geo.project([f+1e-5,d]),y=ee(p[1]-n,p[0]-r),v=ee(h[1]-n,h[0]-r);if("north"===i)u=a/180*Math.PI;else if("previous"===i){var g=f/180*Math.PI,m=d/180*Math.PI,x=W/180*Math.PI,b=J/180*Math.PI,_=x-g,w=te(b)*re(_),k=re(b)*te(m)-te(b)*re(m)*te(_);u=-ee(w,k)-Math.PI,W=f,J=d}var T=ne(y,[te(u),0]),M=ne(v,[re(u),0]);a=ee(T[1]+M[1],T[0]+M[0])/Math.PI*180,"previous"!==i||Q===t.uid&&e.i===$+1||(a=null)}if("previous"===i&&!t._geo)if(Q===t.uid&&e.i===$+1&&o(r)&&o(n)){var A=r-X,S=n-K,L=t.line&&t.line.shape||"",O=L.slice(L.length-1);"h"===O&&(S=0),"v"===O&&(A=0),a+=ee(S,A)/Math.PI*180+90}else a=null}return X=r,K=n,$=e.i,Q=t.uid,a}x.getMarkerAngle=ae},90998:function(e,t,r){"use strict";var n,a,i,o,l=r(95616),s=r(39898).round,c=Math.sqrt(2),u=Math.sqrt(3),f=Math.PI,d=Math.cos,h=Math.sin;function p(e){return null===e}function y(e,t,r){if(!(e&&e%360!=0||t))return r;if(i===e&&o===t&&n===r)return a;function s(e,r){var n=d(e),a=h(e),i=r[0],o=r[1]+(t||0);return[i*n-o*a,i*a+o*n]}i=e,o=t,n=r;for(var c=e/180*f,u=0,p=0,y=l(r),v="",g=0;g0;t.each(function(t){var f,d=t[0].trace,h=d.error_x||{},p=d.error_y||{};d.ids&&(f=function(e){return e.id});var y=o.hasMarkers(d)&&d.marker.maxdisplayed>0;p.visible||h.visible||(t=[]);var v=n.select(this).selectAll("g.errorbar").data(t,f);if(v.exit().remove(),t.length){h.visible||v.selectAll("path.xerror").remove(),p.visible||v.selectAll("path.yerror").remove(),v.style("opacity",1);var g=v.enter().append("g").classed("errorbar",!0);u&&g.style("opacity",0).transition().duration(l.duration).style("opacity",1),i.setClipUrl(v,r.layerClipId,e),v.each(function(e){var t=n.select(this),r=function(e,t,r){var n={x:t.c2p(e.x),y:r.c2p(e.y)};void 0!==e.yh&&(n.yh=r.c2p(e.yh),n.ys=r.c2p(e.ys),a(n.ys)||(n.noYS=!0,n.ys=r.c2p(e.ys,!0)));void 0!==e.xh&&(n.xh=t.c2p(e.xh),n.xs=t.c2p(e.xs),a(n.xs)||(n.noXS=!0,n.xs=t.c2p(e.xs,!0)));return n}(e,s,c);if(!y||e.vis){var i,o=t.select("path.yerror");if(p.visible&&a(r.x)&&a(r.yh)&&a(r.ys)){var f=p.width;i="M"+(r.x-f)+","+r.yh+"h"+2*f+"m-"+f+",0V"+r.ys,r.noYS||(i+="m-"+f+",0h"+2*f),!o.size()?o=t.append("path").style("vector-effect","non-scaling-stroke").classed("yerror",!0):u&&(o=o.transition().duration(l.duration).ease(l.easing)),o.attr("d",i)}else o.remove();var d=t.select("path.xerror");if(h.visible&&a(r.y)&&a(r.xh)&&a(r.xs)){var v=(h.copy_ystyle?p:h).width;i="M"+r.xh+","+(r.y-v)+"v"+2*v+"m0,-"+v+"H"+r.xs,r.noXS||(i+="m0,-"+v+"v"+2*v),!d.size()?d=t.append("path").style("vector-effect","non-scaling-stroke").classed("xerror",!0):u&&(d=d.transition().duration(l.duration).ease(l.easing)),d.attr("d",i)}else d.remove()}})}})}},62662:function(e,t,r){"use strict";var n=r(39898),a=r(7901);e.exports=function(e){e.each(function(e){var t=e[0].trace,r=t.error_y||{},i=t.error_x||{},o=n.select(this);o.selectAll("path.yerror").style("stroke-width",r.thickness+"px").call(a.stroke,r.color),i.copy_ystyle&&(i=r),o.selectAll("path.xerror").style("stroke-width",i.thickness+"px").call(a.stroke,i.color)})}},77914:function(e,t,r){"use strict";var n=r(41940),a=r(528).hoverlabel,i=r(1426).extendFlat;e.exports={hoverlabel:{bgcolor:i({},a.bgcolor,{arrayOk:!0}),bordercolor:i({},a.bordercolor,{arrayOk:!0}),font:n({arrayOk:!0,editType:"none"}),align:i({},a.align,{arrayOk:!0}),namelength:i({},a.namelength,{arrayOk:!0}),editType:"none"}}},30732:function(e,t,r){"use strict";var n=r(71828),a=r(73972);function i(e,t,r,a){a=a||n.identity,Array.isArray(e)&&(t[0][r]=a(e))}e.exports=function(e){var t=e.calcdata,r=e._fullLayout;function o(e){return function(t){return n.coerceHoverinfo({hoverinfo:t},{_module:e._module},r)}}for(var l=0;l=0&&r.index_[0]._length||oe<0||oe>w[0]._length)return p.unhoverRaw(e,t)}if(t.pointerX=ie+_[0]._offset,t.pointerY=oe+w[0]._offset,H="xval"in t?g.flat(s,t.xval):g.p2c(_,ie),q="yval"in t?g.flat(s,t.yval):g.p2c(w,oe),!a(H[0])||!a(q[0]))return o.warn("Fx.hover failed",t,e),p.unhoverRaw(e,t)}var ue=1/0;function fe(e,r){for(V=0;Vee&&(te.splice(0,ee),ue=te[0].distance),m&&0!==F&&0===te.length){Q.distance=F,Q.index=!1;var f=G._module.hoverPoints(Q,K,$,"closest",{hoverLayer:u._hoverlayer});if(f&&(f=f.filter(function(e){return e.spikeDistance<=F})),f&&f.length){var d,p=f.filter(function(e){return e.xa.showspikes&&"hovered data"!==e.xa.spikesnap});if(p.length){var y=p[0];a(y.x0)&&a(y.y0)&&(d=he(y),(!ne.vLinePoint||ne.vLinePoint.spikeDistance>d.spikeDistance)&&(ne.vLinePoint=d))}var v=f.filter(function(e){return e.ya.showspikes&&"hovered data"!==e.ya.spikesnap});if(v.length){var x=v[0];a(x.x0)&&a(x.y0)&&(d=he(x),(!ne.hLinePoint||ne.hLinePoint.spikeDistance>d.spikeDistance)&&(ne.hLinePoint=d))}}}}}function de(e,t,r){for(var n,a=null,i=1/0,o=0;o0&&Math.abs(e.distance)Ae-1;Oe--)Ee(te[Oe]);te=Ce,ge()}var Re=e._hoverdata,Ie=[],ze=B(e),Ne=U(e);for(Y=0;Y1||te.length>1)||"closest"===D&&ae&&te.length>1,Xe=h.combine(u.plot_bgcolor||h.background,u.paper_bgcolor),Ke=P(te,{gd:e,hovermode:D,rotateLabels:Je,bgColor:Xe,container:u._hoverlayer,outerContainer:u._paper.node(),commonLabelOpts:u.hoverlabel,hoverdistance:u.hoverdistance});g.isUnifiedHover(D)||(!function(e,t,r){var n,a,i,o,l,s,c,u=0,f=1,d=e.size(),h=new Array(d),p=0;function y(e){var t=e[0],r=e[e.length-1];if(a=t.pmin-t.pos-t.dp+t.size,i=r.pos+r.dp+r.size-t.pmax,a>.01){for(l=e.length-1;l>=0;l--)e[l].dp+=a;n=!1}if(!(i<.01)){if(a<-.01){for(l=e.length-1;l>=0;l--)e[l].dp-=i;n=!1}if(n){var c=0;for(o=0;ot.pmax&&c++;for(o=e.length-1;o>=0&&!(c<=0);o--)(s=e[o]).pos>t.pmax-1&&(s.del=!0,c--);for(o=0;o=0;l--)e[l].dp-=i;for(o=e.length-1;o>=0&&!(c<=0);o--)(s=e[o]).pos+s.dp+s.size>t.pmax&&(s.del=!0,c--)}}}e.each(function(e){var n=e[t],a="x"===n._id.charAt(0),i=n.range;0===p&&i&&i[0]>i[1]!==a&&(f=-1),h[p++]=[{datum:e,traceIndex:e.trace.index,dp:0,pos:e.pos,posref:e.posref,size:e.by*(a?k:1)/2,pmin:0,pmax:a?r.width:r.height}]}),h.sort(function(e,t){return e[0].posref-t[0].posref||f*(t[0].traceIndex-e[0].traceIndex)});for(;!n&&u<=d;){for(u++,n=!0,o=0;o.01&&m.pmin===x.pmin&&m.pmax===x.pmax){for(l=g.length-1;l>=0;l--)g[l].dp+=a;for(v.push.apply(v,g),h.splice(o+1,1),c=0,l=v.length-1;l>=0;l--)c+=v[l].dp;for(i=c/v.length,l=v.length-1;l>=0;l--)v[l].dp-=i;n=!1}else o++}h.forEach(y)}for(o=h.length-1;o>=0;o--){var b=h[o];for(l=b.length-1;l>=0;l--){var _=b[l],w=_.datum;w.offset=_.dp,w.del=_.del}}}(Ke,Je?"xa":"ya",u),R(Ke,Je,u._invScaleX,u._invScaleY));if(l&&l.tagName){var $e=v.getComponentMethod("annotations","hasClickToShow")(e,Ie);f(n.select(l),$e?"pointer":"")}if(!l||i||!function(e,t,r){if(!r||r.length!==e._hoverdata.length)return!0;for(var n=r.length-1;n>=0;n--){var a=r[n],i=e._hoverdata[n];if(a.curveNumber!==i.curveNumber||String(a.pointNumber)!==String(i.pointNumber)||String(a.pointNumbers)!==String(i.pointNumbers))return!0}return!1}(e,0,Re))return;Re&&e.emit("plotly_unhover",{event:t,points:Re});e.emit("plotly_hover",{event:t,points:e._hoverdata,xaxes:_,yaxes:w,xvals:H,yvals:q})}(e,t,r,i,l)})},t.loneHover=function(e,t){var r=!0;Array.isArray(e)||(r=!1,e=[e]);var a=t.gd,i=B(a),o=U(a),l=P(e.map(function(e){var r=e._x0||e.x0||e.x||0,n=e._x1||e.x1||e.x||0,l=e._y0||e.y0||e.y||0,s=e._y1||e.y1||e.y||0,c=e.eventData;if(c){var u=Math.min(r,n),f=Math.max(r,n),d=Math.min(l,s),p=Math.max(l,s),y=e.trace;if(v.traceIs(y,"gl3d")){var g=a._fullLayout[y.scene]._scene.container,m=g.offsetLeft,x=g.offsetTop;u+=m,f+=m,d+=x,p+=x}c.bbox={x0:u+o,x1:f+o,y0:d+i,y1:p+i},t.inOut_bbox&&t.inOut_bbox.push(c.bbox)}else c=!1;return{color:e.color||h.defaultLine,x0:e.x0||e.x||0,x1:e.x1||e.x||0,y0:e.y0||e.y||0,y1:e.y1||e.y||0,xLabel:e.xLabel,yLabel:e.yLabel,zLabel:e.zLabel,text:e.text,name:e.name,idealAlign:e.idealAlign,borderColor:e.borderColor,fontFamily:e.fontFamily,fontSize:e.fontSize,fontColor:e.fontColor,nameLength:e.nameLength,textAlign:e.textAlign,trace:e.trace||{index:0,hoverinfo:""},xa:{_offset:0},ya:{_offset:0},index:0,hovertemplate:e.hovertemplate||!1,hovertemplateLabels:e.hovertemplateLabels||!1,eventData:c}}),{gd:a,hovermode:"closest",rotateLabels:!1,bgColor:t.bgColor||h.background,container:n.select(t.container),outerContainer:t.outerContainer||t.container}),s=0,c=0;return l.sort(function(e,t){return e.y0-t.y0}).each(function(e,r){var n=e.y0-e.by/2;e.offset=n-5([\s\S]*)<\/extra>/;function P(e,t){var r=t.gd,a=r._fullLayout,i=t.hovermode,c=t.rotateLabels,f=t.bgColor,p=t.container,y=t.outerContainer,w=t.commonLabelOpts||{};if(0===e.length)return[[]];var k=t.fontFamily||m.HOVERFONT,T=t.fontSize||m.HOVERFONTSIZE,M=e[0],L=M.xa,O=M.ya,D=i.charAt(0),P=D+"Label",R=M[P];if(void 0===R&&"multicategory"===L.type)for(var I=0;Ia.width-b?(v=a.width-b,t.attr("d","M"+(b-A)+",0L"+b+","+x+A+"v"+x+(2*S+m.height)+"H-"+b+"V"+x+A+"H"+(b-2*A)+"Z")):t.attr("d","M0,0L"+A+","+x+A+"H"+(S+m.width/2)+"v"+x+(2*S+m.height)+"H-"+(S+m.width/2)+"V"+x+A+"H-"+A+"Z")}else{var _,C,D;"right"===O.side?(_="start",C=1,D="",v=L._offset+L._length):(_="end",C=-1,D="-",v=L._offset),g=O._offset+(M.y0+M.y1)/2,s.attr("text-anchor",_),t.attr("d","M0,0L"+D+A+","+A+"V"+(S+m.height/2)+"h"+D+(2*S+m.width)+"V-"+(S+m.height/2)+"H"+D+A+"V-"+A+"Z");var P,E=m.height/2,I=N-m.top-E,z="clip"+a._uid+"commonlabel"+O._id;if(v=0?le:se+fe=0?se:xe+fe=0?ie:oe+de=0?oe:be+de=0,"top"!==e.idealAlign&&V||!Z?V?(P+=z/2,e.anchor="start"):e.anchor="middle":(P-=z/2,e.anchor="end");else if(e.pos=P,V=D+I/2+G<=F,Z=D-I/2-G>=0,"left"!==e.idealAlign&&V||!Z)if(V)D+=I/2,e.anchor="start";else{e.anchor="middle";var W=G/2,J=D+W-F,X=D-W;J>0&&(D-=J),X<0&&(D+=-X)}else D-=I/2,e.anchor="end";w.attr("text-anchor",e.anchor),L&&M.attr("text-anchor",e.anchor),t.attr("transform",l(D,P)+(c?s(_):""))}),_e}function E(e,t,r,n,a,i){var l="",s="";void 0!==e.nameOverride&&(e.name=e.nameOverride),e.name&&(e.trace._meta&&(e.name=o.templateString(e.name,e.trace._meta)),l=F(e.name,e.nameLength));var c=r.charAt(0),u="x"===c?"y":"x";void 0!==e.zLabel?(void 0!==e.xLabel&&(s+="x: "+e.xLabel+"
"),void 0!==e.yLabel&&(s+="y: "+e.yLabel+"
"),"choropleth"!==e.trace.type&&"choroplethmapbox"!==e.trace.type&&(s+=(s?"z: ":"")+e.zLabel)):t&&e[c+"Label"]===a?s=e[u+"Label"]||"":void 0===e.xLabel?void 0!==e.yLabel&&"scattercarpet"!==e.trace.type&&(s=e.yLabel):s=void 0===e.yLabel?e.xLabel:"("+e.xLabel+", "+e.yLabel+")",!e.text&&0!==e.text||Array.isArray(e.text)||(s+=(s?"
":"")+e.text),void 0!==e.extraText&&(s+=(s?"
":"")+e.extraText),i&&""===s&&!e.hovertemplate&&(""===l&&i.remove(),s=l);var f=e.hovertemplate||!1;if(f){var d=e.hovertemplateLabels||e;e[c+"Label"]!==a&&(d[c+"other"]=d[c+"Val"],d[c+"otherLabel"]=d[c+"Label"]),s=(s=o.hovertemplateString(f,d,n._d3locale,e.eventData[0]||{},e.trace._meta)).replace(D,function(t,r){return l=F(r,e.nameLength),""})}return[s,l]}function R(e,t,r,a){var i=function(e){return e*r},o=function(e){return e*a};e.each(function(e){var r=n.select(this);if(e.del)return r.remove();var a=r.select("text.nums"),l=e.anchor,s="end"===l?-1:1,c={start:1,end:-1,middle:0}[l],f=c*(A+S),h=f+c*(e.txwidth+S),p=0,y=e.offset,v="middle"===l;v&&(f-=e.tx2width/2,h+=e.txwidth/2+S),t&&(y*=-M,p=e.offset*T),r.select("path").attr("d",v?"M-"+i(e.bx/2+e.tx2width/2)+","+o(y-e.by/2)+"h"+i(e.bx)+"v"+o(e.by)+"h-"+i(e.bx)+"Z":"M0,0L"+i(s*A+p)+","+o(A+y)+"v"+o(e.by/2-A)+"h"+i(s*e.bx)+"v-"+o(e.by)+"H"+i(s*A+p)+"V"+o(y-A)+"Z");var g=p+f,m=y+e.ty0-e.by/2+S,x=e.textAlign||"auto";"auto"!==x&&("left"===x&&"start"!==l?(a.attr("text-anchor","start"),g=v?-e.bx/2-e.tx2width/2+S:-e.bx-S):"right"===x&&"end"!==l&&(a.attr("text-anchor","end"),g=v?e.bx/2-e.tx2width/2-S:e.bx+S)),a.call(u.positionText,i(g),o(m)),e.tx2width&&(r.select("text.name").call(u.positionText,i(h+c*S+p),o(y+e.ty0-e.by/2+S)),r.select("rect").call(d.setRect,i(h+(c-1)*e.tx2width/2+p),o(y-e.by/2-1),i(e.tx2width),o(e.by+2)))})}function I(e,t){var r=e.index,n=e.trace||{},i=e.cd[0],l=e.cd[r]||{};function s(e){return e||a(e)&&0===e}var c=Array.isArray(r)?function(e,t){var a=o.castOption(i,r,e);return s(a)?a:o.extractOption({},n,"",t)}:function(e,t){return o.extractOption(l,n,e,t)};function u(t,r,n){var a=c(r,n);s(a)&&(e[t]=a)}if(u("hoverinfo","hi","hoverinfo"),u("bgcolor","hbg","hoverlabel.bgcolor"),u("borderColor","hbc","hoverlabel.bordercolor"),u("fontFamily","htf","hoverlabel.font.family"),u("fontSize","hts","hoverlabel.font.size"),u("fontColor","htc","hoverlabel.font.color"),u("nameLength","hnl","hoverlabel.namelength"),u("textAlign","hta","hoverlabel.align"),e.posref="y"===t||"closest"===t&&"h"===n.orientation?e.xa._offset+(e.x0+e.x1)/2:e.ya._offset+(e.y0+e.y1)/2,e.x0=o.constrain(e.x0,0,e.xa._length),e.x1=o.constrain(e.x1,0,e.xa._length),e.y0=o.constrain(e.y0,0,e.ya._length),e.y1=o.constrain(e.y1,0,e.ya._length),void 0!==e.xLabelVal&&(e.xLabel="xLabel"in e?e.xLabel:y.hoverLabelText(e.xa,e.xLabelVal,n.xhoverformat),e.xVal=e.xa.c2d(e.xLabelVal)),void 0!==e.yLabelVal&&(e.yLabel="yLabel"in e?e.yLabel:y.hoverLabelText(e.ya,e.yLabelVal,n.yhoverformat),e.yVal=e.ya.c2d(e.yLabelVal)),void 0!==e.zLabelVal&&void 0===e.zLabel&&(e.zLabel=String(e.zLabelVal)),!(isNaN(e.xerr)||"log"===e.xa.type&&e.xerr<=0)){var f=y.tickText(e.xa,e.xa.c2l(e.xerr),"hover").text;void 0!==e.xerrneg?e.xLabel+=" +"+f+" / -"+y.tickText(e.xa,e.xa.c2l(e.xerrneg),"hover").text:e.xLabel+=" ± "+f,"x"===t&&(e.distance+=1)}if(!(isNaN(e.yerr)||"log"===e.ya.type&&e.yerr<=0)){var d=y.tickText(e.ya,e.ya.c2l(e.yerr),"hover").text;void 0!==e.yerrneg?e.yLabel+=" +"+d+" / -"+y.tickText(e.ya,e.ya.c2l(e.yerrneg),"hover").text:e.yLabel+=" ± "+d,"y"===t&&(e.distance+=1)}var h=e.hoverinfo||e.trace.hoverinfo;return h&&"all"!==h&&(-1===(h=Array.isArray(h)?h:h.split("+")).indexOf("x")&&(e.xLabel=void 0),-1===h.indexOf("y")&&(e.yLabel=void 0),-1===h.indexOf("z")&&(e.zLabel=void 0),-1===h.indexOf("text")&&(e.text=void 0),-1===h.indexOf("name")&&(e.name=void 0)),e}function z(e,t,r){var n,a,o=r.container,l=r.fullLayout,s=l._size,c=r.event,u=!!t.hLinePoint,f=!!t.vLinePoint;if(o.selectAll(".spikeline").remove(),f||u){var p=h.combine(l.plot_bgcolor,l.paper_bgcolor);if(u){var v,g,m=t.hLinePoint;n=m&&m.xa,"cursor"===(a=m&&m.ya).spikesnap?(v=c.pointerX,g=c.pointerY):(v=n._offset+m.x,g=a._offset+m.y);var x,b,_=i.readability(m.color,p)<1.5?h.contrast(p):m.color,w=a.spikemode,k=a.spikethickness,T=a.spikecolor||_,M=y.getPxPosition(e,a);if(-1!==w.indexOf("toaxis")||-1!==w.indexOf("across")){if(-1!==w.indexOf("toaxis")&&(x=M,b=v),-1!==w.indexOf("across")){var A=a._counterDomainMin,S=a._counterDomainMax;"free"===a.anchor&&(A=Math.min(A,a.position),S=Math.max(S,a.position)),x=s.l+A*s.w,b=s.l+S*s.w}o.insert("line",":first-child").attr({x1:x,x2:b,y1:g,y2:g,"stroke-width":k,stroke:T,"stroke-dasharray":d.dashStyle(a.spikedash,k)}).classed("spikeline",!0).classed("crisp",!0),o.insert("line",":first-child").attr({x1:x,x2:b,y1:g,y2:g,"stroke-width":k+2,stroke:p}).classed("spikeline",!0).classed("crisp",!0)}-1!==w.indexOf("marker")&&o.insert("circle",":first-child").attr({cx:M+("right"!==a.side?k:-k),cy:g,r:k,fill:T}).classed("spikeline",!0)}if(f){var L,O,C=t.vLinePoint;n=C&&C.xa,a=C&&C.ya,"cursor"===n.spikesnap?(L=c.pointerX,O=c.pointerY):(L=n._offset+C.x,O=a._offset+C.y);var D,P,E=i.readability(C.color,p)<1.5?h.contrast(p):C.color,R=n.spikemode,I=n.spikethickness,z=n.spikecolor||E,N=y.getPxPosition(e,n);if(-1!==R.indexOf("toaxis")||-1!==R.indexOf("across")){if(-1!==R.indexOf("toaxis")&&(D=N,P=O),-1!==R.indexOf("across")){var F=n._counterDomainMin,j=n._counterDomainMax;"free"===n.anchor&&(F=Math.min(F,n.position),j=Math.max(j,n.position)),D=s.t+(1-j)*s.h,P=s.t+(1-F)*s.h}o.insert("line",":first-child").attr({x1:L,x2:L,y1:D,y2:P,"stroke-width":I,stroke:z,"stroke-dasharray":d.dashStyle(n.spikedash,I)}).classed("spikeline",!0).classed("crisp",!0),o.insert("line",":first-child").attr({x1:L,x2:L,y1:D,y2:P,"stroke-width":I+2,stroke:p}).classed("spikeline",!0).classed("crisp",!0)}-1!==R.indexOf("marker")&&o.insert("circle",":first-child").attr({cx:L,cy:N-("top"!==n.side?I:-I),r:I,fill:z}).classed("spikeline",!0)}}}function N(e,t){return!t||(t.vLinePoint!==e._spikepoints.vLinePoint||t.hLinePoint!==e._spikepoints.hLinePoint)}function F(e,t){return u.plainText(e||"",{len:t,allowedTags:["br","sub","sup","b","i","em"]})}function j(e,t,r){var n=t[e+"a"],a=t[e+"Val"],i=t.cd[0];if("category"===n.type||"multicategory"===n.type)a=n._categoriesMap[a];else if("date"===n.type){var o=t.trace[e+"periodalignment"];if(o){var l=t.cd[t.index],s=l[e+"Start"];void 0===s&&(s=l[e]);var c=l[e+"End"];void 0===c&&(c=l[e]);var u=c-s;"end"===o?a+=u:"middle"===o&&(a+=u/2)}a=n.d2c(a)}return i&&i.t&&i.t.posLetter===n._id&&("group"!==r.boxmode&&"group"!==r.violinmode||(a+=i.t.dPos)),a}function B(e){return e.offsetTop+e.clientTop}function U(e){return e.offsetLeft+e.clientLeft}function H(e,t){var r=e._fullLayout,n=t.getBoundingClientRect(),a=n.x,i=n.y,l=a+n.width,s=i+n.height,c=o.apply3DTransform(r._invTransform)(a,i),u=o.apply3DTransform(r._invTransform)(l,s),f=c[0],d=c[1],h=u[0],p=u[1];return{x:f,y:d,width:h-f,height:p-d,top:Math.min(d,p),left:Math.min(f,h),right:Math.max(f,h),bottom:Math.max(d,p)}}},38048:function(e,t,r){"use strict";var n=r(71828),a=r(7901),i=r(23469).isUnifiedHover;e.exports=function(e,t,r,o){o=o||{};var l=t.legend;function s(e){o.font[e]||(o.font[e]=l?t.legend.font[e]:t.font[e])}t&&i(t.hovermode)&&(o.font||(o.font={}),s("size"),s("family"),s("color"),l?(o.bgcolor||(o.bgcolor=a.combine(t.legend.bgcolor,t.paper_bgcolor)),o.bordercolor||(o.bordercolor=t.legend.bordercolor)):o.bgcolor||(o.bgcolor=t.paper_bgcolor)),r("hoverlabel.bgcolor",o.bgcolor),r("hoverlabel.bordercolor",o.bordercolor),r("hoverlabel.namelength",o.namelength),n.coerceFont(r,"hoverlabel.font",o.font),r("hoverlabel.align",o.align)}},98212:function(e,t,r){"use strict";var n=r(71828),a=r(528);e.exports=function(e,t){function r(r,i){return void 0!==t[r]?t[r]:n.coerce(e,t,a,r,i)}return r("clickmode"),r("hovermode")}},30211:function(e,t,r){"use strict";var n=r(39898),a=r(71828),i=r(28569),o=r(23469),l=r(528),s=r(88335);e.exports={moduleType:"component",name:"fx",constants:r(26675),schema:{layout:l},attributes:r(77914),layoutAttributes:l,supplyLayoutGlobalDefaults:r(22774),supplyDefaults:r(54268),supplyLayoutDefaults:r(34938),calc:r(30732),getDistanceFunction:o.getDistanceFunction,getClosest:o.getClosest,inbox:o.inbox,quadrature:o.quadrature,appendArrayPointValue:o.appendArrayPointValue,castHoverOption:function(e,t,r){return a.castOption(e,t,"hoverlabel."+r)},castHoverinfo:function(e,t,r){return a.castOption(e,r,"hoverinfo",function(r){return a.coerceHoverinfo({hoverinfo:r},{_module:e._module},t)})},hover:s.hover,unhover:i.unhover,loneHover:s.loneHover,loneUnhover:function(e){var t=a.isD3Selection(e)?e:n.select(e);t.selectAll("g.hovertext").remove(),t.selectAll(".spikeline").remove()},click:r(75914)}},528:function(e,t,r){"use strict";var n=r(26675),a=r(41940),i=a({editType:"none"});i.family.dflt=n.HOVERFONT,i.size.dflt=n.HOVERFONTSIZE,e.exports={clickmode:{valType:"flaglist",flags:["event","select"],dflt:"event",editType:"plot",extras:["none"]},dragmode:{valType:"enumerated",values:["zoom","pan","select","lasso","drawclosedpath","drawopenpath","drawline","drawrect","drawcircle","orbit","turntable",!1],dflt:"zoom",editType:"modebar"},hovermode:{valType:"enumerated",values:["x","y","closest",!1,"x unified","y unified"],dflt:"closest",editType:"modebar"},hoverdistance:{valType:"integer",min:-1,dflt:20,editType:"none"},spikedistance:{valType:"integer",min:-1,dflt:-1,editType:"none"},hoverlabel:{bgcolor:{valType:"color",editType:"none"},bordercolor:{valType:"color",editType:"none"},font:i,grouptitlefont:a({editType:"none"}),align:{valType:"enumerated",values:["left","right","auto"],dflt:"auto",editType:"none"},namelength:{valType:"integer",min:-1,dflt:15,editType:"none"},editType:"none"},selectdirection:{valType:"enumerated",values:["h","v","d","any"],dflt:"any",editType:"none"}}},34938:function(e,t,r){"use strict";var n=r(71828),a=r(528),i=r(98212),o=r(38048);e.exports=function(e,t){function r(r,i){return n.coerce(e,t,a,r,i)}i(e,t)&&(r("hoverdistance"),r("spikedistance")),"select"===r("dragmode")&&r("selectdirection");var l=t._has("mapbox"),s=t._has("geo"),c=t._basePlotModules.length;"zoom"===t.dragmode&&((l||s)&&1===c||l&&s&&2===c)&&(t.dragmode="pan"),o(e,t,r),n.coerceFont(r,"hoverlabel.grouptitlefont",t.hoverlabel.font)}},22774:function(e,t,r){"use strict";var n=r(71828),a=r(38048),i=r(528);e.exports=function(e,t){a(e,t,function(r,a){return n.coerce(e,t,i,r,a)})}},83312:function(e,t,r){"use strict";var n=r(71828),a=r(30587).counter,i=r(27670).Y,o=r(85555).idRegex,l=r(44467),s={rows:{valType:"integer",min:1,editType:"plot"},roworder:{valType:"enumerated",values:["top to bottom","bottom to top"],dflt:"top to bottom",editType:"plot"},columns:{valType:"integer",min:1,editType:"plot"},subplots:{valType:"info_array",freeLength:!0,dimensions:2,items:{valType:"enumerated",values:[a("xy").toString(),""],editType:"plot"},editType:"plot"},xaxes:{valType:"info_array",freeLength:!0,items:{valType:"enumerated",values:[o.x.toString(),""],editType:"plot"},editType:"plot"},yaxes:{valType:"info_array",freeLength:!0,items:{valType:"enumerated",values:[o.y.toString(),""],editType:"plot"},editType:"plot"},pattern:{valType:"enumerated",values:["independent","coupled"],dflt:"coupled",editType:"plot"},xgap:{valType:"number",min:0,max:1,editType:"plot"},ygap:{valType:"number",min:0,max:1,editType:"plot"},domain:i({name:"grid",editType:"plot",noGridCell:!0},{}),xside:{valType:"enumerated",values:["bottom","bottom plot","top plot","top"],dflt:"bottom plot",editType:"plot"},yside:{valType:"enumerated",values:["left","left plot","right plot","right"],dflt:"left plot",editType:"plot"},editType:"plot"};function c(e,t,r){var n=t[r+"axes"],a=Object.keys((e._splomAxes||{})[r]||{});return Array.isArray(n)?n:a.length?a:void 0}function u(e,t,r,n,a,i){var o=t(e+"gap",r),l=t("domain."+e);t(e+"side",n);for(var s=new Array(a),c=l[0],u=(l[1]-c)/(a-o),f=u*(1-o),d=0;d1){d||h||p||"independent"===T("pattern")&&(d=!0),v._hasSubplotGrid=d;var x,b,_="top to bottom"===T("roworder"),w=d?.2:.1,k=d?.3:.1;y&&t._splomGridDflt&&(x=t._splomGridDflt.xside,b=t._splomGridDflt.yside),v._domains={x:u("x",T,w,x,m),y:u("y",T,k,b,g,_)}}else delete t.grid}function T(e,t){return n.coerce(r,v,s,e,t)}},contentDefaults:function(e,t){var r=t.grid;if(r&&r._domains){var n,a,i,o,l,s,u,d=e.grid||{},h=t._subplots,p=r._hasSubplotGrid,y=r.rows,v=r.columns,g="independent"===r.pattern,m=r._axisMap={};if(p){var x=d.subplots||[];s=r.subplots=new Array(y);var b=1;for(n=0;n1);if(!1===_&&(t.legend=void 0),(!1!==_||f.uirevision)&&(h("uirevision",t.uirevision),!1!==_)){h("bgcolor",t.paper_bgcolor),h("bordercolor"),h("borderwidth");var w,k,T,M=a.coerceFont(h,"font",t.font),A="h"===h("orientation");if(A?(w=0,n.getComponentMethod("rangeslider","isVisible")(e.xaxis)?(k=1.1,T="bottom"):(k=-.1,T="top")):(w=1.02,k=1,T="auto"),h("traceorder",x),c.isGrouped(t.legend)&&h("tracegroupgap"),h("entrywidth"),h("entrywidthmode"),h("itemsizing"),h("itemwidth"),h("itemclick"),h("itemdoubleclick"),h("groupclick"),h("x",w),h("xanchor"),h("y",k),h("yanchor",T),h("valign"),a.noneOrAll(f,d,["x","y"]),h("title.text")){h("title.side",A?"left":"top");var S=a.extendFlat({},M,{size:a.bigFont(M.size)});a.coerceFont(h,"title.font",S)}}}},43969:function(e,t,r){"use strict";var n=r(39898),a=r(71828),i=r(74875),o=r(73972),l=r(11086),s=r(28569),c=r(91424),u=r(7901),f=r(63893),d=r(85167),h=r(14928),p=r(18783),y=p.LINE_SPACING,v=p.FROM_TL,g=p.FROM_BR,m=r(82424),x=r(53630),b=r(10130),_=1;function w(e,t,r){var n=e[0],a=n.width,i=t.entrywidthmode,o=n.trace.legendwidth||t.entrywidth;return"fraction"===i?t._maxWidth*o:r+(o||a)}function k(e,t,r,n,a){var i=r.data()[0][0].trace,s={event:a,node:r.node(),curveNumber:i.index,expandedIndex:i._expandedIndex,data:e.data,layout:e.layout,frames:e._transitionData._frames,config:e._context,fullData:e._fullData,fullLayout:e._fullLayout};if(i._group&&(s.group=i._group),o.traceIs(i,"pie-like")&&(s.label=r.datum()[0].label),!1!==l.triggerHandler(e,"plotly_legendclick",s))if(1===n)t._clickTimeout=setTimeout(function(){e._fullLayout&&d(r,e,n)},e._context.doubleClickDelay);else if(2===n){t._clickTimeout&&clearTimeout(t._clickTimeout),e._legendMouseDownTime=0,!1!==l.triggerHandler(e,"plotly_legenddoubleclick",s)&&d(r,e,n)}}function T(e,t,r){var n,i,l=e.data()[0][0],s=l.trace,u=o.traceIs(s,"pie-like"),d=!r._inHover&&t._context.edits.legendText&&!u,p=r._maxNameLength;l.groupTitle?(n=l.groupTitle.text,i=l.groupTitle.font):(i=r.font,r.entries?n=l.text:(n=u?l.label:s.name,s._meta&&(n=a.templateString(n,s._meta))));var y=a.ensureSingle(e,"text","legendtext");y.attr("text-anchor","start").call(c.font,i).text(d?M(n,p):n);var v=r.itemwidth+2*h.itemGap;f.positionText(y,v,0),d?y.call(f.makeEditable,{gd:t,text:n}).call(S,e,t,r).on("edit",function(n){this.text(M(n,p)).call(S,e,t,r);var i=l.trace._fullInput||{},c={};if(o.hasTransform(i,"groupby")){var u=o.getTransformIndices(i,"groupby"),f=u[u.length-1],d=a.keyedContainer(i,"transforms["+f+"].styles","target","value.name");d.set(l.trace._group,n),c=d.constructUpdate()}else c.name=n;return o.call("_guiRestyle",t,c,s.index)}):S(y,e,t,r)}function M(e,t){var r=Math.max(4,t);if(e&&e.trim().length>=r/2)return e;for(var n=r-(e=e||"").length;n>0;n--)e+=" ";return e}function A(e,t){var r,i=t._context.doubleClickDelay,o=1,l=a.ensureSingle(e,"rect","legendtoggle",function(e){t._context.staticPlot||e.style("cursor","pointer").attr("pointer-events","all"),e.call(u.fill,"rgba(0,0,0,0)")});t._context.staticPlot||(l.on("mousedown",function(){(r=(new Date).getTime())-t._legendMouseDownTimei&&(o=Math.max(o-1,1)),k(t,r,e,o,n.event)}}))}function S(e,t,r,n,a){n._inHover&&e.attr("data-notex",!0),f.convertToTspans(e,r,function(){!function(e,t,r,n){var a=e.data()[0][0];if(!r._inHover&&a&&!a.trace.showlegend)return void e.remove();var i=e.select("g[class*=math-group]"),o=i.node();r||(r=t._fullLayout.legend);var l,s=r.borderwidth;l=n===_?r.title.font:a.groupTitle?a.groupTitle.font:r.font;var u,d,p=l.size*y;if(o){var v=c.bBox(o);u=v.height,d=v.width,n===_?c.setTranslate(i,s,s+.75*u):c.setTranslate(i,0,.25*u)}else{var g=e.select(n===_?".legendtitletext":".legendtext"),m=f.lineCount(g),x=g.node();if(u=p*m,d=x?c.bBox(x).width:0,n===_)"left"===r.title.side&&(d+=2*h.itemGap),f.positionText(g,s+h.titlePad,s+p);else{var b=2*h.itemGap+r.itemwidth;a.groupTitle&&(b=h.itemGap,d-=r.itemwidth),f.positionText(g,b,-p*((m-1)/2-.3))}}n===_?(r._titleWidth=d,r._titleHeight=u):(a.lineHeight=p,a.height=Math.max(u,16)+3,a.width=d)}(t,r,n,a)})}function L(e){return a.isRightAnchor(e)?"right":a.isCenterAnchor(e)?"center":"left"}function O(e){return a.isBottomAnchor(e)?"bottom":a.isMiddleAnchor(e)?"middle":"top"}e.exports=function(e,t){return t||(t=e._fullLayout.legend||{}),function(e,t){var r,l,f=e._fullLayout,d="legend"+f._uid,p=t._inHover;p?(r=t.layer,d+="-hover"):r=f._infolayer;if(!r)return;e._legendMouseDownTime||(e._legendMouseDownTime=0);if(p){if(!t.entries)return;l=m(t.entries,t)}else{if(!e.calcdata)return;l=f.showlegend&&m(e.calcdata,t)}var y=f.hiddenlabels||[];if(!(p||f.showlegend&&l.length))return r.selectAll(".legend").remove(),f._topdefs.select("#"+d).remove(),i.autoMargin(e,"legend");var M=a.ensureSingle(r,"g","legend",function(e){p||e.attr("pointer-events","all")}),C=a.ensureSingleById(f._topdefs,"clipPath",d,function(e){e.append("rect")}),D=a.ensureSingle(M,"rect","bg",function(e){e.attr("shape-rendering","crispEdges")});D.call(u.stroke,t.bordercolor).call(u.fill,t.bgcolor).style("stroke-width",t.borderwidth+"px");var P=a.ensureSingle(M,"g","scrollbox"),E=t.title;if(t._titleWidth=0,t._titleHeight=0,E.text){var R=a.ensureSingle(P,"text","legendtitletext");R.attr("text-anchor","start").call(c.font,E.font).text(E.text),S(R,P,e,t,_)}else P.selectAll(".legendtitletext").remove();var I=a.ensureSingle(M,"rect","scrollbar",function(e){e.attr(h.scrollBarEnterAttrs).call(u.fill,h.scrollBarColor)}),z=P.selectAll("g.groups").data(l);z.enter().append("g").attr("class","groups"),z.exit().remove();var N=z.selectAll("g.traces").data(a.identity);N.enter().append("g").attr("class","traces"),N.exit().remove(),N.style("opacity",function(e){var t=e[0].trace;return o.traceIs(t,"pie-like")?-1!==y.indexOf(e[0].label)?.5:1:"legendonly"===t.visible?.5:1}).each(function(){n.select(this).call(T,e,t)}).call(x,e,t).each(function(){p||n.select(this).call(A,e)}),a.syncOrAsync([i.previousPromises,function(){return function(e,t,r,a){var i=e._fullLayout;a||(a=i.legend);var o=i._size,l=b.isVertical(a),s=b.isGrouped(a),u="fraction"===a.entrywidthmode,f=a.borderwidth,d=2*f,p=h.itemGap,y=a.itemwidth+2*p,v=2*(f+p),g=O(a),m=a.y<0||0===a.y&&"top"===g,x=a.y>1||1===a.y&&"bottom"===g,_=a.tracegroupgap,k={};a._maxHeight=Math.max(m||x?i.height/2:o.h,30);var T=0;a._width=0,a._height=0;var M=function(e){var t=0,r=0,n=e.title.side;n&&(-1!==n.indexOf("left")&&(t=e._titleWidth),-1!==n.indexOf("top")&&(r=e._titleHeight));return[t,r]}(a);if(l)r.each(function(e){var t=e[0].height;c.setTranslate(this,f+M[0],f+M[1]+a._height+t/2+p),a._height+=t,a._width=Math.max(a._width,e[0].width)}),T=y+a._width,a._width+=p+y+d,a._height+=v,s&&(t.each(function(e,t){c.setTranslate(this,0,t*a.tracegroupgap)}),a._height+=(a._lgroupsLength-1)*a.tracegroupgap);else{var A=L(a),S=a.x<0||0===a.x&&"right"===A,C=a.x>1||1===a.x&&"left"===A,D=x||m,P=i.width/2;a._maxWidth=Math.max(S?D&&"left"===A?o.l+o.w:P:C?D&&"right"===A?o.r+o.w:P:o.w,2*y);var E=0,R=0;r.each(function(e){var t=w(e,a,y);E=Math.max(E,t),R+=t}),T=null;var I=0;if(s){var z=0,N=0,F=0;t.each(function(){var e=0,t=0;n.select(this).selectAll("g.traces").each(function(r){var n=w(r,a,y),i=r[0].height;c.setTranslate(this,M[0],M[1]+f+p+i/2+t),t+=i,e=Math.max(e,n),k[r[0].trace.legendgroup]=e});var r=e+p;N>0&&r+f+N>a._maxWidth?(I=Math.max(I,N),N=0,F+=z+_,z=t):z=Math.max(z,t),c.setTranslate(this,N,F),N+=r}),a._width=Math.max(I,N)+f,a._height=F+z+v}else{var j=r.size(),B=R+d+(j-1)*p=a._maxWidth&&(I=Math.max(I,Y),H=0,q+=U,a._height+=U,U=0),c.setTranslate(this,M[0]+f+H,M[1]+f+q+t/2+p),Y=H+r+p,H+=n,U=Math.max(U,t)}),B?(a._width=H+d,a._height=U+v):(a._width=Math.max(I,Y)+d,a._height+=U+v)}}a._width=Math.ceil(Math.max(a._width+M[0],a._titleWidth+2*(f+h.titlePad))),a._height=Math.ceil(Math.max(a._height+M[1],a._titleHeight+2*(f+h.itemGap))),a._effHeight=Math.min(a._height,a._maxHeight);var V=e._context.edits,Z=V.legendText||V.legendPosition;r.each(function(e){var t=n.select(this).select(".legendtoggle"),r=e[0].height,i=e[0].trace.legendgroup,o=w(e,a,y);s&&""!==i&&(o=k[i]);var f=Z?y:T||o;l||u||(f+=p/2),c.setRect(t,0,-r/2,f,r)})}(e,z,N,t)},function(){var l,u,y,m,x=f._size,b=t.borderwidth;if(!p){var _=function(e){var t=e._fullLayout.legend,r=L(t),n=O(t);return i.autoMargin(e,"legend",{x:t.x,y:t.y,l:t._width*v[r],r:t._width*g[r],b:t._effHeight*g[n],t:t._effHeight*v[n]})}(e);if(_)return;var w=x.l+x.w*t.x-v[L(t)]*t._width,T=x.t+x.h*(1-t.y)-v[O(t)]*t._effHeight;if(f.margin.autoexpand){var A=w,S=T;w=a.constrain(w,0,f.width-t._width),T=a.constrain(T,0,f.height-t._effHeight),w!==A&&a.log("Constrain legend.x to make legend fit inside graph"),T!==S&&a.log("Constrain legend.y to make legend fit inside graph")}c.setTranslate(M,w,T)}if(I.on(".drag",null),M.on("wheel",null),p||t._height<=t._maxHeight||e._context.staticPlot){var E=t._effHeight;p&&(E=t._height),D.attr({width:t._width-b,height:E-b,x:b/2,y:b/2}),c.setTranslate(P,0,0),C.select("rect").attr({width:t._width-2*b,height:E-2*b,x:b,y:b}),c.setClipUrl(P,d,e),c.setRect(I,0,0,0,0),delete t._scrollY}else{var R,z,N,F=Math.max(h.scrollBarMinHeight,t._effHeight*t._effHeight/t._height),j=t._effHeight-F-2*h.scrollBarMargin,B=t._height-t._effHeight,U=j/B,H=Math.min(t._scrollY||0,B);D.attr({width:t._width-2*b+h.scrollBarWidth+h.scrollBarMargin,height:t._effHeight-b,x:b/2,y:b/2}),C.select("rect").attr({width:t._width-2*b+h.scrollBarWidth+h.scrollBarMargin,height:t._effHeight-2*b,x:b,y:b+H}),c.setClipUrl(P,d,e),V(H,F,U),M.on("wheel",function(){V(H=a.constrain(t._scrollY+n.event.deltaY/j*B,0,B),F,U),0!==H&&H!==B&&n.event.preventDefault()});var q=n.behavior.drag().on("dragstart",function(){var e=n.event.sourceEvent;R="touchstart"===e.type?e.changedTouches[0].clientY:e.clientY,N=H}).on("drag",function(){var e=n.event.sourceEvent;2===e.buttons||e.ctrlKey||(z="touchmove"===e.type?e.changedTouches[0].clientY:e.clientY,V(H=function(e,t,r){var n=(r-t)/U+e;return a.constrain(n,0,B)}(N,R,z),F,U))});I.call(q);var Y=n.behavior.drag().on("dragstart",function(){var e=n.event.sourceEvent;"touchstart"===e.type&&(R=e.changedTouches[0].clientY,N=H)}).on("drag",function(){var e=n.event.sourceEvent;"touchmove"===e.type&&(z=e.changedTouches[0].clientY,V(H=function(e,t,r){var n=(t-r)/U+e;return a.constrain(n,0,B)}(N,R,z),F,U))});P.call(Y)}function V(r,n,a){t._scrollY=e._fullLayout.legend._scrollY=r,c.setTranslate(P,0,-r),c.setRect(I,t._width,h.scrollBarMargin+r*a,h.scrollBarWidth,n),C.select("rect").attr("y",b+r)}e._context.edits.legendPosition&&(M.classed("cursor-move",!0),s.init({element:M.node(),gd:e,prepFn:function(){var e=c.getTranslate(M);y=e.x,m=e.y},moveFn:function(e,r){var n=y+e,a=m+r;c.setTranslate(M,n,a),l=s.align(n,0,x.l,x.l+x.w,t.xanchor),u=s.align(a,0,x.t+x.h,x.t,t.yanchor)},doneFn:function(){void 0!==l&&void 0!==u&&o.call("_guiRelayout",e,{"legend.x":l,"legend.y":u})},clickFn:function(t,n){var a=r.selectAll("g.traces").filter(function(){var e=this.getBoundingClientRect();return n.clientX>=e.left&&n.clientX<=e.right&&n.clientY>=e.top&&n.clientY<=e.bottom});a.size()>0&&k(e,M,a,t,n)}}))}],e)}(e,t)}},82424:function(e,t,r){"use strict";var n=r(73972),a=r(10130);e.exports=function(e,t){var r,i,o=t._inHover,l=a.isGrouped(t),s=a.isReversed(t),c={},u=[],f=!1,d={},h=0,p=0;function y(e,r){if(""!==e&&a.isGrouped(t))-1===u.indexOf(e)?(u.push(e),f=!0,c[e]=[r]):c[e].push(r);else{var n="~~i"+h;u.push(n),c[n]=[r],h++}}for(r=0;rM&&(T=M)}w[r][0]._groupMinRank=T,w[r][0]._preGroupSort=r}var A=function(e,t){return e.trace.legendrank-t.trace.legendrank||e._preSort-t._preSort};for(w.forEach(function(e,t){e[0]._preGroupSort=t}),w.sort(function(e,t){return e[0]._groupMinRank-t[0]._groupMinRank||e[0]._preGroupSort-t[0]._preGroupSort}),r=0;rr?r:e}e.exports=function(e,t,r){var w=t._fullLayout;r||(r=w.legend);var k="constant"===r.itemsizing,T=r.itemwidth,M=(T+2*h.itemGap)/2,A=o(M,0),S=function(e,t,r,n){var a;if(e+1)a=e;else{if(!(t&&t.width>0))return 0;a=t.width}return k?n:Math.min(a,r)};function L(e,i,o){var u=e[0].trace,f=u.marker||{},d=f.line||{},h=o?u.visible&&u.type===o:a.traceIs(u,"bar"),p=n.select(i).select("g.legendpoints").selectAll("path.legend"+o).data(h?[e]:[]);p.enter().append("path").classed("legend"+o,!0).attr("d","M6,6H-6V-6H6Z").attr("transform",A),p.exit().remove(),p.each(function(e){var a=n.select(this),i=e[0],o=S(i.mlw,f.line,m,v);a.style("stroke-width",o+"px");var h=i.mcc;if(!r._inHover&&"mc"in i){var p=c(f),y=p.mid;void 0===y&&(y=(p.max+p.min)/2),h=l.tryColorscale(f,"")(y)}var g=h||i.mc||f.color,x=f.pattern,b=x&&l.getPatternAttr(x.shape,0,"");if(b){var w=l.getPatternAttr(x.bgcolor,0,null),k=l.getPatternAttr(x.fgcolor,0,null),T=x.fgopacity,M=_(x.size,8,10),A=_(x.solidity,.5,1),L="legend-"+u.uid;a.call(l.pattern,"legend",t,L,b,M,A,h,x.fillmode,w,k,T)}else a.call(s.fill,g);o&&s.stroke(a,i.mlc||d.color)})}function O(e,t,r){var o=e[0],l=o.trace,s=r?l.visible&&l.type===r:a.traceIs(l,r),c=n.select(t).select("g.legendpoints").selectAll("path.legend"+r).data(s?[e]:[]);if(c.enter().append("path").classed("legend"+r,!0).attr("d","M6,6H-6V-6H6Z").attr("transform",A),c.exit().remove(),c.size()){var u=(l.marker||{}).line,h=S(d(u.width,o.pts),u,m,v),p=i.minExtend(l,{marker:{line:{width:h}}});p.marker.line.color=u.color;var y=i.minExtend(o,{trace:p});f(c,y,p)}}e.each(function(e){var t=n.select(this),a=i.ensureSingle(t,"g","layers");a.style("opacity",e[0].trace.opacity);var l=r.valign,s=e[0].lineHeight,c=e[0].height;if("middle"!==l&&s&&c){var u={top:1,bottom:-1}[l]*(.5*(s-c+3));a.attr("transform",o(0,u))}else a.attr("transform",null);a.selectAll("g.legendfill").data([e]).enter().append("g").classed("legendfill",!0),a.selectAll("g.legendlines").data([e]).enter().append("g").classed("legendlines",!0);var f=a.selectAll("g.legendsymbols").data([e]);f.enter().append("g").classed("legendsymbols",!0),f.selectAll("g.legendpoints").data([e]).enter().append("g").classed("legendpoints",!0)}).each(function(e){var r,a=e[0].trace,o=[];if(a.visible)switch(a.type){case"histogram2d":case"heatmap":o=[["M-15,-2V4H15V-2Z"]],r=!0;break;case"choropleth":case"choroplethmapbox":o=[["M-6,-6V6H6V-6Z"]],r=!0;break;case"densitymapbox":o=[["M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0"]],r="radial";break;case"cone":o=[["M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z"],["M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z"],["M-6,-2 A2,2 0 0,0 -6,2 L6,0Z"]],r=!1;break;case"streamtube":o=[["M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z"],["M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z"],["M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z"]],r=!1;break;case"surface":o=[["M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z"],["M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z"]],r=!0;break;case"mesh3d":o=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],r=!1;break;case"volume":o=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],r=!0;break;case"isosurface":o=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6 A12,24 0 0,0 6,-6 L0,6Z"]],r=!1}var u=n.select(this).select("g.legendpoints").selectAll("path.legend3dandfriends").data(o);u.enter().append("path").classed("legend3dandfriends",!0).attr("transform",A).style("stroke-miterlimit",1),u.exit().remove(),u.each(function(e,o){var u,f=n.select(this),d=c(a),h=d.colorscale,p=d.reversescale;if(h){if(!r){var y=h.length;u=0===o?h[p?y-1:0][1]:1===o?h[p?0:y-1][1]:h[Math.floor((y-1)/2)][1]}}else{var v=a.vertexcolor||a.facecolor||a.color;u=i.isArrayOrTypedArray(v)?v[o]||v[0]:v}f.attr("d",e[0]),u?f.call(s.fill,u):f.call(function(e){if(e.size()){var n="legendfill-"+a.uid;l.gradient(e,t,n,x(p,"radial"===r),h,"fill")}})})}).each(function(e){var t=e[0].trace,r="waterfall"===t.type;if(e[0]._distinct&&r){var a=e[0].trace[e[0].dir].marker;return e[0].mc=a.color,e[0].mlw=a.line.width,e[0].mlc=a.line.color,L(e,this,"waterfall")}var i=[];t.visible&&r&&(i=e[0].hasTotals?[["increasing","M-6,-6V6H0Z"],["totals","M6,6H0L-6,-6H-0Z"],["decreasing","M6,6V-6H0Z"]]:[["increasing","M-6,-6V6H6Z"],["decreasing","M6,6V-6H-6Z"]]);var o=n.select(this).select("g.legendpoints").selectAll("path.legendwaterfall").data(i);o.enter().append("path").classed("legendwaterfall",!0).attr("transform",A).style("stroke-miterlimit",1),o.exit().remove(),o.each(function(e){var r=n.select(this),a=t[e[0]].marker,i=S(void 0,a.line,m,v);r.attr("d",e[1]).style("stroke-width",i+"px").call(s.fill,a.color),i&&r.call(s.stroke,a.line.color)})}).each(function(e){L(e,this,"funnel")}).each(function(e){L(e,this)}).each(function(e){var r=e[0].trace,o=n.select(this).select("g.legendpoints").selectAll("path.legendbox").data(r.visible&&a.traceIs(r,"box-violin")?[e]:[]);o.enter().append("path").classed("legendbox",!0).attr("d","M6,6H-6V-6H6Z").attr("transform",A),o.exit().remove(),o.each(function(){var e=n.select(this);if("all"!==r.boxpoints&&"all"!==r.points||0!==s.opacity(r.fillcolor)||0!==s.opacity((r.line||{}).color)){var a=S(void 0,r.line,m,v);e.style("stroke-width",a+"px").call(s.fill,r.fillcolor),a&&s.stroke(e,r.line.color)}else{var c=i.minExtend(r,{marker:{size:k?p:i.constrain(r.marker.size,2,16),sizeref:1,sizemin:1,sizemode:"diameter"}});o.call(l.pointStyle,c,t)}})}).each(function(e){O(e,this,"funnelarea")}).each(function(e){O(e,this,"pie")}).each(function(e){var r,a,o=b(e),s=o.showFill,f=o.showLine,d=o.showGradientLine,h=o.showGradientFill,p=o.anyFill,v=o.anyLine,m=e[0],_=m.trace,w=c(_),k=w.colorscale,M=w.reversescale,A=u.hasMarkers(_)||!p?"M5,0":v?"M5,-2":"M5,-3",L=n.select(this),O=L.select(".legendfill").selectAll("path").data(s||h?[e]:[]);if(O.enter().append("path").classed("js-fill",!0),O.exit().remove(),O.attr("d",A+"h"+T+"v6h-"+T+"z").call(function(e){if(e.size())if(s)l.fillGroupStyle(e,t);else{var r="legendfill-"+_.uid;l.gradient(e,t,r,x(M),k,"fill")}}),f||d){var C=S(void 0,_.line,g,y);a=i.minExtend(_,{line:{width:C}}),r=[i.minExtend(m,{trace:a})]}var D=L.select(".legendlines").selectAll("path").data(f||d?[r]:[]);D.enter().append("path").classed("js-line",!0),D.exit().remove(),D.attr("d",A+(d?"l"+T+",0.0001":"h"+T)).call(f?l.lineGroupStyle:function(e){if(e.size()){var r="legendline-"+_.uid;l.lineGroupStyle(e),l.gradient(e,t,r,x(M),k,"stroke")}})}).each(function(e){var r,a,o=b(e),s=o.anyFill,c=o.anyLine,f=o.showLine,d=o.showMarker,h=e[0],g=h.trace,m=!d&&!c&&!s&&u.hasText(g);function x(e,t,r,n){var a=i.nestedProperty(g,e).get(),o=i.isArrayOrTypedArray(a)&&t?t(a):a;if(k&&o&&void 0!==n&&(o=n),r){if(or[1])return r[1]}return o}function _(e){return h._distinct&&h.index&&e[h.index]?e[h.index]:e[0]}if(d||m||f){var w={},T={};if(d){w.mc=x("marker.color",_),w.mx=x("marker.symbol",_),w.mo=x("marker.opacity",i.mean,[.2,1]),w.mlc=x("marker.line.color",_),w.mlw=x("marker.line.width",i.mean,[0,5],v),T.marker={sizeref:1,sizemin:1,sizemode:"diameter"};var M=x("marker.size",i.mean,[2,16],p);w.ms=M,T.marker.size=M}f&&(T.line={width:x("line.width",_,[0,10],y)}),m&&(w.tx="Aa",w.tp=x("textposition",_),w.ts=10,w.tc=x("textfont.color",_),w.tf=x("textfont.family",_)),r=[i.minExtend(h,w)],(a=i.minExtend(g,T)).selectedpoints=null,a.texttemplate=null}var S=n.select(this).select("g.legendpoints"),L=S.selectAll("path.scatterpts").data(d?r:[]);L.enter().insert("path",":first-child").classed("scatterpts",!0).attr("transform",A),L.exit().remove(),L.call(l.pointStyle,a,t),d&&(r[0].mrc=3);var O=S.selectAll("g.pointtext").data(m?r:[]);O.enter().append("g").classed("pointtext",!0).append("text").attr("transform",A),O.exit().remove(),O.selectAll("text").call(l.textPointStyle,a,t)}).each(function(e){var t=e[0].trace,r=n.select(this).select("g.legendpoints").selectAll("path.legendcandle").data(t.visible&&"candlestick"===t.type?[e,e]:[]);r.enter().append("path").classed("legendcandle",!0).attr("d",function(e,t){return t?"M-15,0H-8M-8,6V-6H8Z":"M15,0H8M8,-6V6H-8Z"}).attr("transform",A).style("stroke-miterlimit",1),r.exit().remove(),r.each(function(e,r){var a=n.select(this),i=t[r?"increasing":"decreasing"],o=S(void 0,i.line,m,v);a.style("stroke-width",o+"px").call(s.fill,i.fillcolor),o&&s.stroke(a,i.line.color)})}).each(function(e){var t=e[0].trace,r=n.select(this).select("g.legendpoints").selectAll("path.legendohlc").data(t.visible&&"ohlc"===t.type?[e,e]:[]);r.enter().append("path").classed("legendohlc",!0).attr("d",function(e,t){return t?"M-15,0H0M-8,-6V0":"M15,0H0M8,6V0"}).attr("transform",A).style("stroke-miterlimit",1),r.exit().remove(),r.each(function(e,r){var a=n.select(this),i=t[r?"increasing":"decreasing"],o=S(void 0,i.line,m,v);a.style("fill","none").call(l.dashLine,i.line.dash,o),o&&s.stroke(a,i.line.color)})})}},42068:function(e,t,r){"use strict";r(93348);e.exports={editType:"modebar",orientation:{valType:"enumerated",values:["v","h"],dflt:"h",editType:"modebar"},bgcolor:{valType:"color",editType:"modebar"},color:{valType:"color",editType:"modebar"},activecolor:{valType:"color",editType:"modebar"},uirevision:{valType:"any",editType:"none"},add:{valType:"string",arrayOk:!0,dflt:"",editType:"modebar"},remove:{valType:"string",arrayOk:!0,dflt:"",editType:"modebar"}}},26023:function(e,t,r){"use strict";var n=r(73972),a=r(74875),i=r(41675),o=r(24255),l=r(34031).eraseActiveShape,s=r(71828),c=s._,u=e.exports={};function f(e,t){var r,a,o=t.currentTarget,l=o.getAttribute("data-attr"),s=o.getAttribute("data-val")||!0,c=e._fullLayout,u={},f=i.list(e,null,!0),d=c._cartesianSpikesEnabled;if("zoom"===l){var h,p="in"===s?.5:2,y=(1+p)/2,v=(1-p)/2;for(a=0;a1?(P=["toggleHover"],E=["resetViews"]):g?(D=["zoomInGeo","zoomOutGeo"],P=["hoverClosestGeo"],E=["resetGeo"]):v?(P=["hoverClosest3d"],E=["resetCameraDefault3d","resetCameraLastSave3d"]):w?(D=["zoomInMapbox","zoomOutMapbox"],P=["toggleHover"],E=["resetViewMapbox"]):b?P=["hoverClosestGl2d"]:m?P=["hoverClosestPie"]:M?(P=["hoverClosestCartesian","hoverCompareCartesian"],E=["resetViewSankey"]):P=["toggleHover"];y&&(P=["toggleSpikelines","hoverClosestCartesian","hoverCompareCartesian"]);(function(e){for(var t=0;t0)){var y=function(e,t,r){for(var n=r.filter(function(r){return t[r].anchor===e._id}),a=0,i=0;i=n.max)t=N[r+1];else if(e=n.pmax)t=N[r+1];else if(e=0;T--){var M=r.append("path").attr(v).style("opacity",T?.1:g).call(o.stroke,x).call(o.fill,m).call(l.dashLine,T?"solid":_,T?4+b:b);if(p(M,e,i),w){var A=s(e.layout,"selections",i);M.style({cursor:"move"});var S={element:M.node(),plotinfo:h,gd:e,editHelpers:A,isActiveSelection:!0},L=n(c,e);a(L,M,S)}else M.style("pointer-events",T?"all":"none");k[T]=M}var O=k[0];k[1].node().addEventListener("click",function(){return function(e,t){if(!d(e))return;var r=+t.node().getAttribute("data-index");if(r>=0){if(r===e._fullLayout._activeSelectionIndex)return void y(e);e._fullLayout._activeSelectionIndex=r,e._fullLayout._deactivateSelection=y,f(e)}}(e,O)})}(e._fullLayout._selectionLayer)}function p(e,t,r){var n=r.xref+r.yref;l.setClipUrl(e,"clip"+t._fullLayout._uid+n,t)}function y(e){d(e)&&(e._fullLayout._activeSelectionIndex>=0&&(i(e),delete e._fullLayout._activeSelectionIndex,f(e)))}e.exports={draw:f,drawOne:h,activateLastSelection:function(e){if(!d(e))return;var t=e._fullLayout.selections.length-1;e._fullLayout._activeSelectionIndex=t,e._fullLayout._deactivateSelection=y,f(e)}}},53777:function(e,t,r){"use strict";var n=r(79952).P,a=r(1426).extendFlat;e.exports={newselection:{mode:{valType:"enumerated",values:["immediate","gradual"],dflt:"immediate",editType:"none"},line:{color:{valType:"color",editType:"none"},width:{valType:"number",min:1,dflt:1,editType:"none"},dash:a({},n,{dflt:"dot",editType:"none"}),editType:"none"},editType:"none"},activeselection:{fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"none"},opacity:{valType:"number",min:0,max:1,dflt:.5,editType:"none"},editType:"none"}}},90849:function(e){"use strict";e.exports=function(e,t,r){r("newselection.mode"),r("newselection.line.width")&&(r("newselection.line.color"),r("newselection.line.dash")),r("activeselection.fillcolor"),r("activeselection.opacity")}},35855:function(e,t,r){"use strict";var n=r(64505).selectMode,a=r(51873).clearOutline,i=r(60165),o=i.readPaths,l=i.writePaths,s=i.fixDatesForPaths;e.exports=function(e,t){if(e.length){var r=e[0][0];if(r){var i=r.getAttribute("d"),c=t.gd,u=c._fullLayout.newselection,f=t.plotinfo,d=f.xaxis,h=f.yaxis,p=t.isActiveSelection,y=t.dragmode,v=(c.layout||{}).selections||[];if(!n(y)&&void 0!==p){var g=c._fullLayout._activeSelectionIndex;if(g-1,b=[];if(function(e){return e&&Array.isArray(e)&&!0!==e[0].hoverOnBox}(g)){Z(e,t,i);var _=function(e,t){var r,n,a=e[0],i=-1,o=[];for(n=0;n0?function(e,t){var r,n,a,i=[];for(a=0;a0&&i.push(r);if(1===i.length&&i[0]===t.searchInfo&&(n=t.searchInfo.cd[0].trace).selectedpoints.length===t.pointNumbers.length){for(a=0;a1)return!1;if((a+=r.selectedpoints.length)>1)return!1}return 1===a}(l)&&(d=K(_))){for(o&&o.remove(),v=0;v=0})(a)&&a._fullLayout._deactivateShape(a),function(e){return e._fullLayout._activeSelectionIndex>=0}(a)&&a._fullLayout._deactivateSelection(a);var o=a._fullLayout._zoomlayer,l=h(r),s=y(r);if(l||s){var c,u,f=o.selectAll(".select-outline-"+n.id);if(f&&a._fullLayout._outlining)l&&(c=k(f,e)),c&&i.call("_guiRelayout",a,{shapes:c}),s&&!U(e)&&(u=T(f,e)),u&&(a._fullLayout._noEmitSelectedAtStart=!0,i.call("_guiRelayout",a,{selections:u}).then(function(){t&&M(a)})),a._fullLayout._outlining=!1}n.selection={},n.selection.selectionDefs=e.selectionDefs=[],n.selection.mergedPolygons=e.mergedPolygons=[]}function W(e){return e._id}function J(e,t,r,n){if(!e.calcdata)return[];var a,i,o,l=[],s=t.map(W),c=r.map(W);for(o=0;o0?n[0]:r;return!!t.selectedpoints&&t.selectedpoints.indexOf(a)>-1}function $(e,t,r){var n,a;for(n=0;n-1&&t;if(!i&&t){var te=oe(e,!0);if(te.length){var ne=te[0].xref,he=te[0].yref;if(ne&&he){var pe=ce(te);ue([C(e,ne,"x"),C(e,he,"y")])(Q,pe)}}e._fullLayout._noEmitSelectedAtStart?e._fullLayout._noEmitSelectedAtStart=!1:ee&&fe(e,Q),d._reselect=!1}if(!i&&d._deselect){var ye=d._deselect;(function(e,t,r){for(var n=0;n=0)T._fullLayout._deactivateShape(T);else if(!x){var r=M.clickmode;O.done(Me).then(function(){if(O.clear(Me),2===e){for(be.remove(),K=0;K-1&&H(t,T,n.xaxes,n.yaxes,n.subplot,n,be),"event"===r&&fe(T,void 0);s.click(T,t)}).catch(A.error)}},n.doneFn=function(){Te.remove(),O.done(Me).then(function(){O.clear(Me),!S&&X&&n.selectionDefs&&(X.subtract=xe,n.selectionDefs.push(X),n.mergedPolygons.length=0,[].push.apply(n.mergedPolygons,W)),(S||x)&&G(n,S),n.doneFnCompleted&&n.doneFnCompleted(Ae),b&&fe(T,ie)}).catch(A.error)}},clearOutline:x,clearSelectionsCache:G,selectOnClick:H}},89827:function(e,t,r){"use strict";var n=r(50215),a=r(82196).line,i=r(79952).P,o=r(1426).extendFlat,l=r(44467).templatedArray;r(24695);e.exports=l("shape",{visible:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},type:{valType:"enumerated",values:["circle","rect","path","line"],editType:"calc+arraydraw"},layer:{valType:"enumerated",values:["below","above"],dflt:"above",editType:"arraydraw"},xref:o({},n.xref,{}),xsizemode:{valType:"enumerated",values:["scaled","pixel"],dflt:"scaled",editType:"calc+arraydraw"},xanchor:{valType:"any",editType:"calc+arraydraw"},x0:{valType:"any",editType:"calc+arraydraw"},x1:{valType:"any",editType:"calc+arraydraw"},yref:o({},n.yref,{}),ysizemode:{valType:"enumerated",values:["scaled","pixel"],dflt:"scaled",editType:"calc+arraydraw"},yanchor:{valType:"any",editType:"calc+arraydraw"},y0:{valType:"any",editType:"calc+arraydraw"},y1:{valType:"any",editType:"calc+arraydraw"},path:{valType:"string",editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},line:{color:o({},a.color,{editType:"arraydraw"}),width:o({},a.width,{editType:"calc+arraydraw"}),dash:o({},i,{editType:"arraydraw"}),editType:"calc+arraydraw"},fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},fillrule:{valType:"enumerated",values:["evenodd","nonzero"],dflt:"evenodd",editType:"arraydraw"},editable:{valType:"boolean",dflt:!1,editType:"calc+arraydraw"},editType:"arraydraw"})},5627:function(e,t,r){"use strict";var n=r(71828),a=r(89298),i=r(21459),o=r(30477);function l(e){return c(e.line.width,e.xsizemode,e.x0,e.x1,e.path,!1)}function s(e){return c(e.line.width,e.ysizemode,e.y0,e.y1,e.path,!0)}function c(e,t,r,a,l,s){var c=e/2,u=s;if("pixel"===t){var f=l?o.extractPathCoords(l,s?i.paramIsY:i.paramIsX):[r,a],d=n.aggNums(Math.max,null,f),h=n.aggNums(Math.min,null,f),p=h<0?Math.abs(h)+c:c,y=d>0?d+c:c;return{ppad:c,ppadplus:u?p:y,ppadminus:u?y:p}}return{ppad:c}}function u(e,t,r,n,a){var l="category"===e.type||"multicategory"===e.type?e.r2c:e.d2c;if(void 0!==t)return[l(t),l(r)];if(n){var s,c,u,f,d=1/0,h=-1/0,p=n.match(i.segmentRE);for("date"===e.type&&(l=o.decodeDate(l)),s=0;sh&&(h=f)));return h>=d?[d,h]:void 0}}e.exports=function(e){var t=e._fullLayout,r=n.filterVisible(t.shapes);if(r.length&&e._fullData.length)for(var o=0;o1&&(2!==e.length||"Z"!==e[1][0])&&(0===L&&(e[0][0]="M"),t[S]=e,k(),T())}}()}}function F(e,r){!function(e,r){if(t.length)for(var n=0;nx?(T=f,L="y0",M=x,O="y1"):(T=x,L="y1",M=f,O="y0");K(n),ee(l,r),function(e,t,r){var n=t.xref,a=t.yref,o=i.getFromId(r,n),l=i.getFromId(r,a),s="";"paper"===n||o.autorange||(s+=n);"paper"===a||l.autorange||(s+=a);u.setClipUrl(e,s?"clip"+r._fullLayout._uid+s:null,r)}(t,r,e),X.moveFn="move"===E?$:Q,X.altKey=n.altKey},doneFn:function(){if(m(e))return;h(t),te(l),_(t,e,r),n.call("_guiRelayout",e,s.getUpdateObj())},clickFn:function(){if(m(e))return;te(l)}};function K(r){if(m(e))E=null;else if(F)E="path"===r.target.tagName?"move":"start-point"===r.target.attributes["data-line-point"].value?"resize-over-start-point":"resize-over-end-point";else{var n=X.element.getBoundingClientRect(),a=n.right-n.left,i=n.bottom-n.top,o=r.clientX-n.left,l=r.clientY-n.top,s=!j&&a>R&&i>I&&!r.shiftKey?d.getCursor(o/a,1-l/i):"move";h(t,s),E=s.split("-")[0]}}function $(n,a){if("path"===r.type){var i=function(e){return e},o=i,s=i;z?B("xanchor",r.xanchor=G(b+n)):(o=function(e){return G(V(e)+n)},U&&"date"===U.type&&(o=y.encodeDate(o))),N?B("yanchor",r.yanchor=W(k+a)):(s=function(e){return W(Z(e)+a)},q&&"date"===q.type&&(s=y.encodeDate(s))),B("path",r.path=w(P,o,s))}else z?B("xanchor",r.xanchor=G(b+n)):(B("x0",r.x0=G(c+n)),B("x1",r.x1=G(g+n))),N?B("yanchor",r.yanchor=W(k+a)):(B("y0",r.y0=W(f+a)),B("y1",r.y1=W(x+a)));t.attr("d",v(e,r)),ee(l,r)}function Q(n,a){if(j){var i=function(e){return e},o=i,s=i;z?B("xanchor",r.xanchor=G(b+n)):(o=function(e){return G(V(e)+n)},U&&"date"===U.type&&(o=y.encodeDate(o))),N?B("yanchor",r.yanchor=W(k+a)):(s=function(e){return W(Z(e)+a)},q&&"date"===q.type&&(s=y.encodeDate(s))),B("path",r.path=w(P,o,s))}else if(F){if("resize-over-start-point"===E){var u=c+n,d=N?f-a:f+a;B("x0",r.x0=z?u:G(u)),B("y0",r.y0=N?d:W(d))}else if("resize-over-end-point"===E){var h=g+n,p=N?x-a:x+a;B("x1",r.x1=z?h:G(h)),B("y1",r.y1=N?p:W(p))}}else{var m=function(e){return-1!==E.indexOf(e)},_=m("n"),H=m("s"),Y=m("w"),J=m("e"),X=_?T+a:T,K=H?M+a:M,$=Y?A+n:A,Q=J?S+n:S;N&&(_&&(X=T-a),H&&(K=M-a)),(!N&&K-X>I||N&&X-K>I)&&(B(L,r[L]=N?X:W(X)),B(O,r[O]=N?K:W(K))),Q-$>R&&(B(C,r[C]=z?$:G($)),B(D,r[D]=z?Q:G(Q)))}t.attr("d",v(e,r)),ee(l,r)}function ee(e,t){(z||N)&&function(){var r="path"!==t.type,n=e.selectAll(".visual-cue").data([0]);n.enter().append("path").attr({fill:"#fff","fill-rule":"evenodd",stroke:"#000","stroke-width":1}).classed("visual-cue",!0);var i=V(z?t.xanchor:a.midRange(r?[t.x0,t.x1]:y.extractPathCoords(t.path,p.paramIsX))),o=Z(N?t.yanchor:a.midRange(r?[t.y0,t.y1]:y.extractPathCoords(t.path,p.paramIsY)));if(i=y.roundPositionForSharpStrokeRendering(i,1),o=y.roundPositionForSharpStrokeRendering(o,1),z&&N){var l="M"+(i-1-1)+","+(o-1-1)+"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z";n.attr("d",l)}else if(z){var s="M"+(i-1-1)+","+(o-9-1)+"v18 h2 v-18 Z";n.attr("d",s)}else{var c="M"+(i-9-1)+","+(o-1-1)+"h18 v2 h-18 Z";n.attr("d",c)}}()}function te(e){e.selectAll(".visual-cue").remove()}d.init(X),J.node().onmousemove=K}(e,R,s,t,r,E):!0===s.editable&&R.style("pointer-events",D||c.opacity(S)*A<=.5?"stroke":"all");R.node().addEventListener("click",function(){return function(e,t){if(!x(e))return;var r=+t.node().getAttribute("data-index");if(r>=0){if(r===e._fullLayout._activeShapeIndex)return void k(e);e._fullLayout._activeShapeIndex=r,e._fullLayout._deactivateShape=k,g(e)}}(e,R)})}}function _(e,t,r){var n=(r.xref+r.yref).replace(/paper/g,"").replace(/[xyz][1-9]* *domain/g,"");u.setClipUrl(e,n?"clip"+t._fullLayout._uid+n:null,t)}function w(e,t,r){return e.replace(p.segmentRE,function(e){var n=0,a=e.charAt(0),i=p.paramIsX[a],o=p.paramIsY[a],l=p.numParams[a];return a+e.substr(1).replace(p.paramRE,function(e){return n>=l?e:(i[n]?e=t(e):o[n]&&(e=r(e)),n++,e)})})}function k(e){x(e)&&(e._fullLayout._activeShapeIndex>=0&&(s(e),delete e._fullLayout._activeShapeIndex,g(e)))}e.exports={draw:g,drawOne:b,eraseActiveShape:function(e){if(!x(e))return;s(e);var t=e._fullLayout._activeShapeIndex,r=(e.layout||{}).shapes||[];if(t0&&sh&&(e="X"),e});return i>h&&(p=p.replace(/[\s,]*X.*/,""),a.log("Ignoring extra params in segment "+e)),u+p})}(r,l,c);if("pixel"===r.xsizemode){var b=l(r.xanchor);u=b+r.x0,f=b+r.x1}else u=l(r.x0),f=l(r.x1);if("pixel"===r.ysizemode){var _=c(r.yanchor);d=_-r.y0,h=_-r.y1}else d=c(r.y0),h=c(r.y1);if("line"===p)return"M"+u+","+d+"L"+f+","+h;if("rect"===p)return"M"+u+","+d+"H"+f+"V"+h+"H"+u+"Z";var w=(u+f)/2,k=(d+h)/2,T=Math.abs(w-u),M=Math.abs(k-d),A="A"+T+","+M,S=w+T+","+k;return"M"+S+A+" 0 1,1 "+(w+","+(k-M))+A+" 0 0,1 "+S+"Z"}},89853:function(e,t,r){"use strict";var n=r(34031);e.exports={moduleType:"component",name:"shapes",layoutAttributes:r(89827),supplyLayoutDefaults:r(84726),supplyDrawNewShapeDefaults:r(45547),includeBasePlot:r(76325)("shapes"),calcAutorange:r(5627),draw:n.draw,drawOne:n.drawOne}},75067:function(e,t,r){"use strict";var n=r(41940),a=r(35025),i=r(1426).extendDeepAll,o=r(30962).overrideAll,l=r(85594),s=r(44467).templatedArray,c=r(98292),u=s("step",{visible:{valType:"boolean",dflt:!0},method:{valType:"enumerated",values:["restyle","relayout","animate","update","skip"],dflt:"restyle"},args:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},label:{valType:"string"},value:{valType:"string"},execute:{valType:"boolean",dflt:!0}});e.exports=o(s("slider",{visible:{valType:"boolean",dflt:!0},active:{valType:"number",min:0,dflt:0},steps:u,lenmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"fraction"},len:{valType:"number",min:0,dflt:1},x:{valType:"number",min:-2,max:3,dflt:0},pad:i(a({editType:"arraydraw"}),{},{t:{dflt:20}}),xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left"},y:{valType:"number",min:-2,max:3,dflt:0},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"top"},transition:{duration:{valType:"number",min:0,dflt:150},easing:{valType:"enumerated",values:l.transition.easing.values,dflt:"cubic-in-out"}},currentvalue:{visible:{valType:"boolean",dflt:!0},xanchor:{valType:"enumerated",values:["left","center","right"],dflt:"left"},offset:{valType:"number",dflt:10},prefix:{valType:"string"},suffix:{valType:"string"},font:n({})},font:n({}),activebgcolor:{valType:"color",dflt:c.gripBgActiveColor},bgcolor:{valType:"color",dflt:c.railBgColor},bordercolor:{valType:"color",dflt:c.railBorderColor},borderwidth:{valType:"number",min:0,dflt:c.railBorderWidth},ticklen:{valType:"number",min:0,dflt:c.tickLength},tickcolor:{valType:"color",dflt:c.tickColor},tickwidth:{valType:"number",min:0,dflt:1},minorticklen:{valType:"number",min:0,dflt:c.minorTickLength}}),"arraydraw","from-root")},98292:function(e){"use strict";e.exports={name:"sliders",containerClassName:"slider-container",groupClassName:"slider-group",inputAreaClass:"slider-input-area",railRectClass:"slider-rail-rect",railTouchRectClass:"slider-rail-touch-rect",gripRectClass:"slider-grip-rect",tickRectClass:"slider-tick-rect",inputProxyClass:"slider-input-proxy",labelsClass:"slider-labels",labelGroupClass:"slider-label-group",labelClass:"slider-label",currentValueClass:"slider-current-value",railHeight:5,menuIndexAttrName:"slider-active-index",autoMarginIdRoot:"slider-",minWidth:30,minHeight:30,textPadX:40,arrowOffsetX:4,railRadius:2,railWidth:5,railBorder:4,railBorderWidth:1,railBorderColor:"#bec8d9",railBgColor:"#f8fafc",railInset:8,stepInset:10,gripRadius:10,gripWidth:20,gripHeight:20,gripBorder:20,gripBorderWidth:1,gripBorderColor:"#bec8d9",gripBgColor:"#f6f8fa",gripBgActiveColor:"#dbdde0",labelPadding:8,labelOffset:0,tickWidth:1,tickColor:"#333",tickOffset:25,tickLength:7,minorTickOffset:25,minorTickColor:"#333",minorTickLength:4,currentValuePadding:8,currentValueInset:0}},12343:function(e,t,r){"use strict";var n=r(71828),a=r(85501),i=r(75067),o=r(98292).name,l=i.steps;function s(e,t,r){function o(r,a){return n.coerce(e,t,i,r,a)}for(var l=a(e,t,{name:"steps",handleItemDefaults:c}),s=0,u=0;u0&&(l=l.transition().duration(t.transition.duration).ease(t.transition.easing)),l.attr("transform",s(o-.5*f.gripWidth,t._dims.currentValueTotalHeight))}}function L(e,t){var r=e._dims;return r.inputAreaStart+f.stepInset+(r.inputAreaLength-2*f.stepInset)*Math.min(1,Math.max(0,t))}function O(e,t){var r=e._dims;return Math.min(1,Math.max(0,(t-f.stepInset-r.inputAreaStart)/(r.inputAreaLength-2*f.stepInset-2*r.inputAreaStart)))}function C(e,t,r){var n=r._dims,a=l.ensureSingle(e,"rect",f.railTouchRectClass,function(n){n.call(M,t,e,r).style("pointer-events","all")});a.attr({width:n.inputAreaLength,height:Math.max(n.inputAreaWidth,f.tickOffset+r.ticklen+n.labelHeight)}).call(i.fill,r.bgcolor).attr("opacity",0),o.setTranslate(a,0,n.currentValueTotalHeight)}function D(e,t){var r=t._dims,n=r.inputAreaLength-2*f.railInset,a=l.ensureSingle(e,"rect",f.railRectClass);a.attr({width:n,height:f.railWidth,rx:f.railRadius,ry:f.railRadius,"shape-rendering":"crispEdges"}).call(i.stroke,t.bordercolor).call(i.fill,t.bgcolor).style("stroke-width",t.borderwidth+"px"),o.setTranslate(a,f.railInset,.5*(r.inputAreaWidth-f.railWidth)+r.currentValueTotalHeight)}e.exports=function(e){var t=e._context.staticPlot,r=e._fullLayout,i=function(e,t){for(var r=e[f.name],n=[],a=0;a0?[0]:[]);function s(t){t._commandObserver&&(t._commandObserver.remove(),delete t._commandObserver),a.autoMargin(e,v(t))}if(l.enter().append("g").classed(f.containerClassName,!0).style("cursor",t?null:"ew-resize"),l.exit().each(function(){n.select(this).selectAll("g."+f.groupClassName).each(s)}).remove(),0!==i.length){var c=l.selectAll("g."+f.groupClassName).data(i,g);c.enter().append("g").classed(f.groupClassName,!0),c.exit().each(s).remove();for(var u=0;u0||d<0){var m={left:[-p,0],right:[p,0],top:[0,-p],bottom:[0,p]}[b.side];t.attr("transform",s(m[0],m[1]))}}}return z.call(N),E&&(L?z.on(".opacity",null):(M=0,A=!0,z.text(m).on("mouseover.opacity",function(){n.select(this).transition().duration(d.SHOW_PLACEHOLDER).style("opacity",1)}).on("mouseout.opacity",function(){n.select(this).transition().duration(d.HIDE_PLACEHOLDER).style("opacity",0)})),z.call(f.makeEditable,{gd:e}).on("edit",function(t){void 0!==x?o.call("_guiRestyle",e,g,t,x):o.call("_guiRelayout",e,g,t)}).on("cancel",function(){this.text(this.attr("data-unformatted")).call(N)}).on("input",function(e){this.text(e||" ").call(f.positionText,_.x,_.y)})),z.classed("js-placeholder",A),k}}},7163:function(e,t,r){"use strict";var n=r(41940),a=r(22399),i=r(1426).extendFlat,o=r(30962).overrideAll,l=r(35025),s=r(44467).templatedArray,c=s("button",{visible:{valType:"boolean"},method:{valType:"enumerated",values:["restyle","relayout","animate","update","skip"],dflt:"restyle"},args:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},args2:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},label:{valType:"string",dflt:""},execute:{valType:"boolean",dflt:!0}});e.exports=o(s("updatemenu",{_arrayAttrRegexps:[/^updatemenus\[(0|[1-9][0-9]+)\]\.buttons/],visible:{valType:"boolean"},type:{valType:"enumerated",values:["dropdown","buttons"],dflt:"dropdown"},direction:{valType:"enumerated",values:["left","right","up","down"],dflt:"down"},active:{valType:"integer",min:-1,dflt:0},showactive:{valType:"boolean",dflt:!0},buttons:c,x:{valType:"number",min:-2,max:3,dflt:-.05},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"right"},y:{valType:"number",min:-2,max:3,dflt:1},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"top"},pad:i(l({editType:"arraydraw"}),{}),font:n({}),bgcolor:{valType:"color"},bordercolor:{valType:"color",dflt:a.borderLine},borderwidth:{valType:"number",min:0,dflt:1,editType:"arraydraw"}}),"arraydraw","from-root")},75909:function(e){"use strict";e.exports={name:"updatemenus",containerClassName:"updatemenu-container",headerGroupClassName:"updatemenu-header-group",headerClassName:"updatemenu-header",headerArrowClassName:"updatemenu-header-arrow",dropdownButtonGroupClassName:"updatemenu-dropdown-button-group",dropdownButtonClassName:"updatemenu-dropdown-button",buttonClassName:"updatemenu-button",itemRectClassName:"updatemenu-item-rect",itemTextClassName:"updatemenu-item-text",menuIndexAttrName:"updatemenu-active-index",autoMarginIdRoot:"updatemenu-",blankHeaderOpts:{label:" "},minWidth:30,minHeight:30,textPadX:24,arrowPadX:16,rx:2,ry:2,textOffsetX:12,textOffsetY:3,arrowOffsetX:4,gapButtonHeader:5,gapButton:2,activeColor:"#F4FAFF",hoverColor:"#F4FAFF",arrowSymbol:{left:"◄",right:"►",up:"▲",down:"▼"}}},64897:function(e,t,r){"use strict";var n=r(71828),a=r(85501),i=r(7163),o=r(75909).name,l=i.buttons;function s(e,t,r){function o(r,a){return n.coerce(e,t,i,r,a)}o("visible",a(e,t,{name:"buttons",handleItemDefaults:c}).length>0)&&(o("active"),o("direction"),o("type"),o("showactive"),o("x"),o("y"),n.noneOrAll(e,t,["x","y"]),o("xanchor"),o("yanchor"),o("pad.t"),o("pad.r"),o("pad.b"),o("pad.l"),n.coerceFont(o,"font",r.font),o("bgcolor",r.paper_bgcolor),o("bordercolor"),o("borderwidth"))}function c(e,t){function r(r,a){return n.coerce(e,t,l,r,a)}r("visible","skip"===e.method||Array.isArray(e.args))&&(r("method"),r("args"),r("args2"),r("label"),r("execute"))}e.exports=function(e,t){a(e,t,{name:o,handleItemDefaults:s})}},13689:function(e,t,r){"use strict";var n=r(39898),a=r(74875),i=r(7901),o=r(91424),l=r(71828),s=r(63893),c=r(44467).arrayEditor,u=r(18783).LINE_SPACING,f=r(75909),d=r(25849);function h(e){return e._index}function p(e,t){return+e.attr(f.menuIndexAttrName)===t._index}function y(e,t,r,n,a,i,o,l){t.active=o,c(e.layout,f.name,t).applyUpdate("active",o),"buttons"===t.type?g(e,n,null,null,t):"dropdown"===t.type&&(a.attr(f.menuIndexAttrName,"-1"),v(e,n,a,i,t),l||g(e,n,a,i,t))}function v(e,t,r,n,a){var i=l.ensureSingle(t,"g",f.headerClassName,function(e){e.style("pointer-events","all")}),s=a._dims,c=a.active,u=a.buttons[c]||f.blankHeaderOpts,d={y:a.pad.t,yPad:0,x:a.pad.l,xPad:0,index:0},h={width:s.headerWidth,height:s.headerHeight};i.call(m,a,u,e).call(A,a,d,h),l.ensureSingle(t,"text",f.headerArrowClassName,function(e){e.attr("text-anchor","end").call(o.font,a.font).text(f.arrowSymbol[a.direction])}).attr({x:s.headerWidth-f.arrowOffsetX+a.pad.l,y:s.headerHeight/2+f.textOffsetY+a.pad.t}),i.on("click",function(){r.call(S,String(p(r,a)?-1:a._index)),g(e,t,r,n,a)}),i.on("mouseover",function(){i.call(w)}),i.on("mouseout",function(){i.call(k,a)}),o.setTranslate(t,s.lx,s.ly)}function g(e,t,r,i,o){r||(r=t).attr("pointer-events","all");var s=function(e){return-1==+e.attr(f.menuIndexAttrName)}(r)&&"buttons"!==o.type?[]:o.buttons,c="dropdown"===o.type?f.dropdownButtonClassName:f.buttonClassName,u=r.selectAll("g."+c).data(l.filterVisible(s)),d=u.enter().append("g").classed(c,!0),h=u.exit();"dropdown"===o.type?(d.attr("opacity","0").transition().attr("opacity","1"),h.transition().attr("opacity","0").remove()):h.remove();var p=0,v=0,g=o._dims,x=-1!==["up","down"].indexOf(o.direction);"dropdown"===o.type&&(x?v=g.headerHeight+f.gapButtonHeader:p=g.headerWidth+f.gapButtonHeader),"dropdown"===o.type&&"up"===o.direction&&(v=-f.gapButtonHeader+f.gapButton-g.openHeight),"dropdown"===o.type&&"left"===o.direction&&(p=-f.gapButtonHeader+f.gapButton-g.openWidth);var b={x:g.lx+p+o.pad.l,y:g.ly+v+o.pad.t,yPad:f.gapButton,xPad:f.gapButton,index:0},T={l:b.x+o.borderwidth,t:b.y+o.borderwidth};u.each(function(l,s){var c=n.select(this);c.call(m,o,l,e).call(A,o,b),c.on("click",function(){n.event.defaultPrevented||(l.execute&&(l.args2&&o.active===s?(y(e,o,0,t,r,i,-1),a.executeAPICommand(e,l.method,l.args2)):(y(e,o,0,t,r,i,s),a.executeAPICommand(e,l.method,l.args))),e.emit("plotly_buttonclicked",{menu:o,button:l,active:o.active}))}),c.on("mouseover",function(){c.call(w)}),c.on("mouseout",function(){c.call(k,o),u.call(_,o)})}),u.call(_,o),x?(T.w=Math.max(g.openWidth,g.headerWidth),T.h=b.y-T.t):(T.w=b.x-T.l,T.h=Math.max(g.openHeight,g.headerHeight)),T.direction=o.direction,i&&(u.size()?function(e,t,r,n,a,i){var o,l,s,c=a.direction,u="up"===c||"down"===c,d=a._dims,h=a.active;if(u)for(l=0,s=0;s0?[0]:[]);if(o.enter().append("g").classed(f.containerClassName,!0).style("cursor","pointer"),o.exit().each(function(){n.select(this).selectAll("g."+f.headerGroupClassName).each(i)}).remove(),0!==r.length){var s=o.selectAll("g."+f.headerGroupClassName).data(r,h);s.enter().append("g").classed(f.headerGroupClassName,!0);for(var c=l.ensureSingle(o,"g",f.dropdownButtonGroupClassName,function(e){e.style("pointer-events","all")}),u=0;uw,M=l.barLength+2*l.barPad,A=l.barWidth+2*l.barPad,S=p,L=v+g;L+A>c&&(L=c-A);var O=this.container.selectAll("rect.scrollbar-horizontal").data(T?[0]:[]);O.exit().on(".drag",null).remove(),O.enter().append("rect").classed("scrollbar-horizontal",!0).call(a.fill,l.barColor),T?(this.hbar=O.attr({rx:l.barRadius,ry:l.barRadius,x:S,y:L,width:M,height:A}),this._hbarXMin=S+M/2,this._hbarTranslateMax=w-M):(delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax);var C=g>k,D=l.barWidth+2*l.barPad,P=l.barLength+2*l.barPad,E=p+y,R=v;E+D>s&&(E=s-D);var I=this.container.selectAll("rect.scrollbar-vertical").data(C?[0]:[]);I.exit().on(".drag",null).remove(),I.enter().append("rect").classed("scrollbar-vertical",!0).call(a.fill,l.barColor),C?(this.vbar=I.attr({rx:l.barRadius,ry:l.barRadius,x:E,y:R,width:D,height:P}),this._vbarYMin=R+P/2,this._vbarTranslateMax=k-P):(delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax);var z=this.id,N=u-.5,F=C?f+D+.5:f+.5,j=d-.5,B=T?h+A+.5:h+.5,U=o._topdefs.selectAll("#"+z).data(T||C?[0]:[]);if(U.exit().remove(),U.enter().append("clipPath").attr("id",z).append("rect"),T||C?(this._clipRect=U.select("rect").attr({x:Math.floor(N),y:Math.floor(j),width:Math.ceil(F)-Math.floor(N),height:Math.ceil(B)-Math.floor(j)}),this.container.call(i.setClipUrl,z,this.gd),this.bg.attr({x:p,y:v,width:y,height:g})):(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(i.setClipUrl,null),delete this._clipRect),T||C){var H=n.behavior.drag().on("dragstart",function(){n.event.sourceEvent.preventDefault()}).on("drag",this._onBoxDrag.bind(this));this.container.on("wheel",null).on("wheel",this._onBoxWheel.bind(this)).on(".drag",null).call(H);var q=n.behavior.drag().on("dragstart",function(){n.event.sourceEvent.preventDefault(),n.event.sourceEvent.stopPropagation()}).on("drag",this._onBarDrag.bind(this));T&&this.hbar.on(".drag",null).call(q),C&&this.vbar.on(".drag",null).call(q)}this.setTranslate(t,r)},l.prototype.disable=function(){(this.hbar||this.vbar)&&(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(i.setClipUrl,null),delete this._clipRect),this.hbar&&(this.hbar.on(".drag",null),this.hbar.remove(),delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax),this.vbar&&(this.vbar.on(".drag",null),this.vbar.remove(),delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax)},l.prototype._onBoxDrag=function(){var e=this.translateX,t=this.translateY;this.hbar&&(e-=n.event.dx),this.vbar&&(t-=n.event.dy),this.setTranslate(e,t)},l.prototype._onBoxWheel=function(){var e=this.translateX,t=this.translateY;this.hbar&&(e+=n.event.deltaY),this.vbar&&(t+=n.event.deltaY),this.setTranslate(e,t)},l.prototype._onBarDrag=function(){var e=this.translateX,t=this.translateY;if(this.hbar){var r=e+this._hbarXMin,a=r+this._hbarTranslateMax;e=(o.constrain(n.event.x,r,a)-r)/(a-r)*(this.position.w-this._box.w)}if(this.vbar){var i=t+this._vbarYMin,l=i+this._vbarTranslateMax;t=(o.constrain(n.event.y,i,l)-i)/(l-i)*(this.position.h-this._box.h)}this.setTranslate(e,t)},l.prototype.setTranslate=function(e,t){var r=this.position.w-this._box.w,n=this.position.h-this._box.h;if(e=o.constrain(e||0,0,r),t=o.constrain(t||0,0,n),this.translateX=e,this.translateY=t,this.container.call(i.setTranslate,this._box.l-this.position.l-e,this._box.t-this.position.t-t),this._clipRect&&this._clipRect.attr({x:Math.floor(this.position.l+e-.5),y:Math.floor(this.position.t+t-.5)}),this.hbar){var a=e/r;this.hbar.call(i.setTranslate,e+a*this._hbarTranslateMax,t)}if(this.vbar){var l=t/n;this.vbar.call(i.setTranslate,e,t+l*this._vbarTranslateMax)}}},18783:function(e){"use strict";e.exports={FROM_BL:{left:0,center:.5,right:1,bottom:0,middle:.5,top:1},FROM_TL:{left:0,center:.5,right:1,bottom:1,middle:.5,top:0},FROM_BR:{left:1,center:.5,right:0,bottom:0,middle:.5,top:1},LINE_SPACING:1.3,CAP_SHIFT:.7,MID_SHIFT:.35,OPPOSITE_SIDE:{left:"right",right:"left",top:"bottom",bottom:"top"}}},24695:function(e){"use strict";e.exports={axisRefDescription:function(e,t,r){return["If set to a",e,"axis id (e.g. *"+e+"* or","*"+e+"2*), the `"+e+"` position refers to a",e,"coordinate. If set to *paper*, the `"+e+"`","position refers to the distance from the",t,"of the plotting","area in normalized coordinates where *0* (*1*) corresponds to the",t,"("+r+"). If set to a",e,"axis ID followed by","*domain* (separated by a space), the position behaves like for","*paper*, but refers to the distance in fractions of the domain","length from the",t,"of the domain of that axis: e.g.,","*"+e+"2 domain* refers to the domain of the second",e," axis and a",e,"position of 0.5 refers to the","point between the",t,"and the",r,"of the domain of the","second",e,"axis."].join(" ")}}},31562:function(e){"use strict";e.exports={FORMAT_LINK:"https://github.com/d3/d3-format/tree/v1.4.5#d3-format",DATE_FORMAT_LINK:"https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format"}},74808:function(e){"use strict";e.exports={COMPARISON_OPS:["=","!=","<",">=",">","<="],COMPARISON_OPS2:["=","<",">=",">","<="],INTERVAL_OPS:["[]","()","[)","(]","][",")(","](",")["],SET_OPS:["{}","}{"],CONSTRAINT_REDUCTION:{"=":"=","<":"<","<=":"<",">":">",">=":">","[]":"[]","()":"[]","[)":"[]","(]":"[]","][":"][",")(":"][","](":"][",")[":"]["}}},37822:function(e){"use strict";e.exports={SHOW_PLACEHOLDER:100,HIDE_PLACEHOLDER:1e3,DESELECTDIM:.2}},50606:function(e){"use strict";e.exports={BADNUM:void 0,FP_SAFE:1e-4*Number.MAX_VALUE,ONEMAXYEAR:316224e5,ONEAVGYEAR:315576e5,ONEMINYEAR:31536e6,ONEMAXQUARTER:79488e5,ONEAVGQUARTER:78894e5,ONEMINQUARTER:76896e5,ONEMAXMONTH:26784e5,ONEAVGMONTH:26298e5,ONEMINMONTH:24192e5,ONEWEEK:6048e5,ONEDAY:864e5,ONEHOUR:36e5,ONEMIN:6e4,ONESEC:1e3,EPOCHJD:2440587.5,ALMOST_EQUAL:1-1e-6,LOG_CLIP:10,MINUS_SIGN:"−"}},77922:function(e,t){"use strict";t.xmlns="http://www.w3.org/2000/xmlns/",t.svg="http://www.w3.org/2000/svg",t.xlink="http://www.w3.org/1999/xlink",t.svgAttrs={xmlns:t.svg,"xmlns:xlink":t.xlink}},8729:function(e,t,r){"use strict";t.version=r(11506).version,r(7417),r(98847);for(var n=r(73972),a=t.register=n.register,i=r(10641),o=Object.keys(i),l=0;l",""," ",""," plotly-logomark"," "," "," "," "," "," "," "," "," "," "," "," "," ",""].join("")}}},99863:function(e,t){"use strict";t.isLeftAnchor=function(e){return"left"===e.xanchor||"auto"===e.xanchor&&e.x<=1/3},t.isCenterAnchor=function(e){return"center"===e.xanchor||"auto"===e.xanchor&&e.x>1/3&&e.x<2/3},t.isRightAnchor=function(e){return"right"===e.xanchor||"auto"===e.xanchor&&e.x>=2/3},t.isTopAnchor=function(e){return"top"===e.yanchor||"auto"===e.yanchor&&e.y>=2/3},t.isMiddleAnchor=function(e){return"middle"===e.yanchor||"auto"===e.yanchor&&e.y>1/3&&e.y<2/3},t.isBottomAnchor=function(e){return"bottom"===e.yanchor||"auto"===e.yanchor&&e.y<=1/3}},26348:function(e,t,r){"use strict";var n=r(64872),a=n.mod,i=n.modHalf,o=Math.PI,l=2*o;function s(e){return Math.abs(e[1]-e[0])>l-1e-14}function c(e,t){return i(t-e,l)}function u(e,t){if(s(t))return!0;var r,n;t[0](n=a(n,l))&&(n+=l);var i=a(e,l),o=i+l;return i>=r&&i<=n||o>=r&&o<=n}function f(e,t,r,n,a,i,c){a=a||0,i=i||0;var u,f,d,h,p,y=s([r,n]);function v(e,t){return[e*Math.cos(t)+a,i-e*Math.sin(t)]}y?(u=0,f=o,d=l):r=a&&e<=i);var a,i},pathArc:function(e,t,r,n,a){return f(null,e,t,r,n,a,0)},pathSector:function(e,t,r,n,a){return f(null,e,t,r,n,a,1)},pathAnnulus:function(e,t,r,n,a,i){return f(e,t,r,n,a,i,1)}}},73627:function(e,t){"use strict";var r=Array.isArray,n=ArrayBuffer,a=DataView;function i(e){return n.isView(e)&&!(e instanceof a)}function o(e){return r(e)||i(e)}function l(e,t,r){if(o(e)){if(o(e[0])){for(var n=r,a=0;aa.max?t.set(r):t.set(+e)}},integer:{coerceFunction:function(e,t,r,a){e%1||!n(e)||void 0!==a.min&&ea.max?t.set(r):t.set(+e)}},string:{coerceFunction:function(e,t,r,n){if("string"!=typeof e){var a="number"==typeof e;!0!==n.strict&&a?t.set(String(e)):t.set(r)}else n.noBlank&&!e?t.set(r):t.set(e)}},color:{coerceFunction:function(e,t,r){a(e).isValid()?t.set(e):t.set(r)}},colorlist:{coerceFunction:function(e,t,r){Array.isArray(e)&&e.length&&e.every(function(e){return a(e).isValid()})?t.set(e):t.set(r)}},colorscale:{coerceFunction:function(e,t,r){t.set(o.get(e,r))}},angle:{coerceFunction:function(e,t,r){"auto"===e?t.set("auto"):n(e)?t.set(f(+e,360)):t.set(r)}},subplotid:{coerceFunction:function(e,t,r,n){var a=n.regex||u(r);"string"==typeof e&&a.test(e)?t.set(e):t.set(r)},validateFunction:function(e,t){var r=t.dflt;return e===r||"string"==typeof e&&!!u(r).test(e)}},flaglist:{coerceFunction:function(e,t,r,n){if(-1===(n.extras||[]).indexOf(e))if("string"==typeof e){for(var a=e.split("+"),i=0;i=n&&e<=a?e:u}if("string"!=typeof e&&"number"!=typeof e)return u;e=String(e);var c=_(r),g=e.charAt(0);!c||"G"!==g&&"g"!==g||(e=e.substr(1),r="");var w=c&&"chinese"===r.substr(0,7),k=e.match(w?x:m);if(!k)return u;var T=k[1],M=k[3]||"1",A=Number(k[5]||1),S=Number(k[7]||0),L=Number(k[9]||0),O=Number(k[11]||0);if(c){if(2===T.length)return u;var C;T=Number(T);try{var D=v.getComponentMethod("calendars","getCal")(r);if(w){var P="i"===M.charAt(M.length-1);M=parseInt(M,10),C=D.newDate(T,D.toMonthIndex(T,M,P),A)}else C=D.newDate(T,Number(M),A)}catch(e){return u}return C?(C.toJD()-y)*f+S*d+L*h+O*p:u}T=2===T.length?(Number(T)+2e3-b)%100+b:Number(T),M-=1;var E=new Date(Date.UTC(2e3,M,A,S,L));return E.setUTCFullYear(T),E.getUTCMonth()!==M?u:E.getUTCDate()!==A?u:E.getTime()+O*p},n=t.MIN_MS=t.dateTime2ms("-9999"),a=t.MAX_MS=t.dateTime2ms("9999-12-31 23:59:59.9999"),t.isDateTime=function(e,r){return t.dateTime2ms(e,r)!==u};var k=90*f,T=3*d,M=5*h;function A(e,t,r,n,a){if((t||r||n||a)&&(e+=" "+w(t,2)+":"+w(r,2),(n||a)&&(e+=":"+w(n,2),a))){for(var i=4;a%10==0;)i-=1,a/=10;e+="."+w(a,i)}return e}t.ms2DateTime=function(e,t,r){if("number"!=typeof e||!(e>=n&&e<=a))return u;t||(t=0);var i,o,l,c,m,x,b=Math.floor(10*s(e+.05,1)),w=Math.round(e-b/10);if(_(r)){var S=Math.floor(w/f)+y,L=Math.floor(s(e,f));try{i=v.getComponentMethod("calendars","getCal")(r).fromJD(S).formatDate("yyyy-mm-dd")}catch(e){i=g("G%Y-%m-%d")(new Date(w))}if("-"===i.charAt(0))for(;i.length<11;)i="-0"+i.substr(1);else for(;i.length<10;)i="0"+i;o=t=n+f&&e<=a-f))return u;var t=Math.floor(10*s(e+.05,1)),r=new Date(Math.round(e-t/10));return A(i("%Y-%m-%d")(r),r.getHours(),r.getMinutes(),r.getSeconds(),10*r.getUTCMilliseconds()+t)},t.cleanDate=function(e,r,n){if(e===u)return r;if(t.isJSDate(e)||"number"==typeof e&&isFinite(e)){if(_(n))return l.error("JS Dates and milliseconds are incompatible with world calendars",e),r;if(!(e=t.ms2DateTimeLocal(+e))&&void 0!==r)return r}else if(!t.isDateTime(e,n))return l.error("unrecognized date",e),r;return e};var S=/%\d?f/g,L=/%h/g,O={1:"1",2:"1",3:"2",4:"2"};function C(e,t,r,n){e=e.replace(S,function(e){var r=Math.min(+e.charAt(1)||6,6);return(t/1e3%1+2).toFixed(r).substr(2).replace(/0+$/,"")||"0"});var a=new Date(Math.floor(t+.05));if(e=e.replace(L,function(){return O[r("%q")(a)]}),_(n))try{e=v.getComponentMethod("calendars","worldCalFmt")(e,t,n)}catch(e){return"Invalid"}return r(e)(a)}var D=[59,59.9,59.99,59.999,59.9999];t.formatDate=function(e,t,r,n,a,i){if(a=_(a)&&a,!t)if("y"===r)t=i.year;else if("m"===r)t=i.month;else{if("d"!==r)return function(e,t){var r=s(e+.05,f),n=w(Math.floor(r/d),2)+":"+w(s(Math.floor(r/h),60),2);if("M"!==t){o(t)||(t=0);var a=(100+Math.min(s(e/p,60),D[t])).toFixed(t).substr(1);t>0&&(a=a.replace(/0+$/,"").replace(/[\.]$/,"")),n+=":"+a}return n}(e,r)+"\n"+C(i.dayMonthYear,e,n,a);t=i.dayMonth+"\n"+i.year}return C(t,e,n,a)};var P=3*f;t.incrementMonth=function(e,t,r){r=_(r)&&r;var n=s(e,f);if(e=Math.round(e-n),r)try{var a=Math.round(e/f)+y,i=v.getComponentMethod("calendars","getCal")(r),o=i.fromJD(a);return t%12?i.add(o,t,"m"):i.add(o,t/12,"y"),(o.toJD()-y)*f+n}catch(t){l.error("invalid ms "+e+" in calendar "+r)}var c=new Date(e+P);return c.setUTCMonth(c.getUTCMonth()+t)+n-P},t.findExactDates=function(e,t){for(var r,n,a=0,i=0,l=0,s=0,c=_(t)&&v.getComponentMethod("calendars","getCal")(t),u=0;u1||y<0||y>1?null:{x:e+s*y,y:t+f*y}}function s(e,t,r,n,a){var i=n*e+a*t;if(i<0)return n*n+a*a;if(i>r){var o=n-e,l=a-t;return o*o+l*l}var s=n*t-a*e;return s*s/r}t.segmentsIntersect=l,t.segmentDistance=function(e,t,r,n,a,i,o,c){if(l(e,t,r,n,a,i,o,c))return 0;var u=r-e,f=n-t,d=o-a,h=c-i,p=u*u+f*f,y=d*d+h*h,v=Math.min(s(u,f,p,a-e,i-t),s(u,f,p,o-e,c-t),s(d,h,y,e-a,t-i),s(d,h,y,r-a,n-i));return Math.sqrt(v)},t.getTextLocation=function(e,t,r,l){if(e===a&&l===i||(n={},a=e,i=l),n[r])return n[r];var s=e.getPointAtLength(o(r-l/2,t)),c=e.getPointAtLength(o(r+l/2,t)),u=Math.atan((c.y-s.y)/(c.x-s.x)),f=e.getPointAtLength(o(r,t)),d={x:(4*f.x+s.x+c.x)/6,y:(4*f.y+s.y+c.y)/6,theta:u};return n[r]=d,d},t.clearLocationCache=function(){a=null},t.getVisibleSegment=function(e,t,r){var n,a,i=t.left,o=t.right,l=t.top,s=t.bottom,c=0,u=e.getTotalLength(),f=u;function d(t){var r=e.getPointAtLength(t);0===t?n=r:t===u&&(a=r);var c=r.xo?r.x-o:0,f=r.ys?r.y-s:0;return Math.sqrt(c*c+f*f)}for(var h=d(c);h;){if((c+=h+r)>f)return;h=d(c)}for(h=d(f);h;){if(c>(f-=h+r))return;h=d(f)}return{min:c,max:f,len:f-c,total:u,isClosed:0===c&&f===u&&Math.abs(n.x-a.x)<.1&&Math.abs(n.y-a.y)<.1}},t.findPointOnPath=function(e,t,r,n){for(var a,i,o,l=(n=n||{}).pathLength||e.getTotalLength(),s=n.tolerance||.001,c=n.iterationLimit||30,u=e.getPointAtLength(0)[r]>e.getPointAtLength(l)[r]?-1:1,f=0,d=0,h=l;f0?h=a:d=a,f++}return i}},23389:function(e){"use strict";e.exports=function(e){return e}},39240:function(e){"use strict";e.exports=function(e,t){if(!t)return e;var r=1/Math.abs(t),n=r>1?(r*e+r*t)/r:e+t,a=String(n).length;if(a>16){var i=String(t).length;if(a>=String(e).length+i){var o=parseFloat(n).toPrecision(12);-1===o.indexOf("e+")&&(n=+o)}}return n}},71828:function(e,t,r){"use strict";var n=r(39898),a=r(84096).g0,i=r(60721).WU,o=r(92770),l=r(50606),s=l.FP_SAFE,c=-s,u=l.BADNUM,f=e.exports={};f.adjustFormat=function(e){return!e||/^\d[.]\df/.test(e)||/[.]\d%/.test(e)?e:"0.f"===e?"~f":/^\d%/.test(e)?"~%":/^\ds/.test(e)?"~s":!/^[~,.0$]/.test(e)&&/[&fps]/.test(e)?"~"+e:e};var d={};f.warnBadFormat=function(e){var t=String(e);d[t]||(d[t]=1,f.warn('encountered bad format: "'+t+'"'))},f.noFormat=function(e){return String(e)},f.numberFormat=function(e){var t;try{t=i(f.adjustFormat(e))}catch(t){return f.warnBadFormat(e),f.noFormat}return t},f.nestedProperty=r(65487),f.keyedContainer=r(66636),f.relativeAttr=r(6962),f.isPlainObject=r(41965),f.toLogRange=r(58163),f.relinkPrivateKeys=r(51332);var h=r(73627);f.isTypedArray=h.isTypedArray,f.isArrayOrTypedArray=h.isArrayOrTypedArray,f.isArray1D=h.isArray1D,f.ensureArray=h.ensureArray,f.concat=h.concat,f.maxRowLength=h.maxRowLength,f.minRowLength=h.minRowLength;var p=r(64872);f.mod=p.mod,f.modHalf=p.modHalf;var y=r(96554);f.valObjectMeta=y.valObjectMeta,f.coerce=y.coerce,f.coerce2=y.coerce2,f.coerceFont=y.coerceFont,f.coercePattern=y.coercePattern,f.coerceHoverinfo=y.coerceHoverinfo,f.coerceSelectionMarkerOpacity=y.coerceSelectionMarkerOpacity,f.validate=y.validate;var v=r(41631);f.dateTime2ms=v.dateTime2ms,f.isDateTime=v.isDateTime,f.ms2DateTime=v.ms2DateTime,f.ms2DateTimeLocal=v.ms2DateTimeLocal,f.cleanDate=v.cleanDate,f.isJSDate=v.isJSDate,f.formatDate=v.formatDate,f.incrementMonth=v.incrementMonth,f.dateTick0=v.dateTick0,f.dfltRange=v.dfltRange,f.findExactDates=v.findExactDates,f.MIN_MS=v.MIN_MS,f.MAX_MS=v.MAX_MS;var g=r(65888);f.findBin=g.findBin,f.sorterAsc=g.sorterAsc,f.sorterDes=g.sorterDes,f.distinctVals=g.distinctVals,f.roundUp=g.roundUp,f.sort=g.sort,f.findIndexOfMin=g.findIndexOfMin,f.sortObjectKeys=r(78607);var m=r(80038);f.aggNums=m.aggNums,f.len=m.len,f.mean=m.mean,f.median=m.median,f.midRange=m.midRange,f.variance=m.variance,f.stdev=m.stdev,f.interp=m.interp;var x=r(35657);f.init2dArray=x.init2dArray,f.transposeRagged=x.transposeRagged,f.dot=x.dot,f.translationMatrix=x.translationMatrix,f.rotationMatrix=x.rotationMatrix,f.rotationXYMatrix=x.rotationXYMatrix,f.apply3DTransform=x.apply3DTransform,f.apply2DTransform=x.apply2DTransform,f.apply2DTransform2=x.apply2DTransform2,f.convertCssMatrix=x.convertCssMatrix,f.inverseTransformMatrix=x.inverseTransformMatrix;var b=r(26348);f.deg2rad=b.deg2rad,f.rad2deg=b.rad2deg,f.angleDelta=b.angleDelta,f.angleDist=b.angleDist,f.isFullCircle=b.isFullCircle,f.isAngleInsideSector=b.isAngleInsideSector,f.isPtInsideSector=b.isPtInsideSector,f.pathArc=b.pathArc,f.pathSector=b.pathSector,f.pathAnnulus=b.pathAnnulus;var _=r(99863);f.isLeftAnchor=_.isLeftAnchor,f.isCenterAnchor=_.isCenterAnchor,f.isRightAnchor=_.isRightAnchor,f.isTopAnchor=_.isTopAnchor,f.isMiddleAnchor=_.isMiddleAnchor,f.isBottomAnchor=_.isBottomAnchor;var w=r(87642);f.segmentsIntersect=w.segmentsIntersect,f.segmentDistance=w.segmentDistance,f.getTextLocation=w.getTextLocation,f.clearLocationCache=w.clearLocationCache,f.getVisibleSegment=w.getVisibleSegment,f.findPointOnPath=w.findPointOnPath;var k=r(1426);f.extendFlat=k.extendFlat,f.extendDeep=k.extendDeep,f.extendDeepAll=k.extendDeepAll,f.extendDeepNoArrays=k.extendDeepNoArrays;var T=r(47769);f.log=T.log,f.warn=T.warn,f.error=T.error;var M=r(30587);f.counterRegex=M.counter;var A=r(79990);f.throttle=A.throttle,f.throttleDone=A.done,f.clearThrottle=A.clear;var S=r(24401);function L(e){var t={};for(var r in e)for(var n=e[r],a=0;as||e=t)&&(o(e)&&e>=0&&e%1==0)},f.noop=r(64213),f.identity=r(23389),f.repeat=function(e,t){for(var r=new Array(t),n=0;nr?Math.max(r,Math.min(t,e)):Math.max(t,Math.min(r,e))},f.bBoxIntersect=function(e,t,r){return r=r||0,e.left<=t.right+r&&t.left<=e.right+r&&e.top<=t.bottom+r&&t.top<=e.bottom+r},f.simpleMap=function(e,t,r,n,a){for(var i=e.length,o=new Array(i),l=0;l=Math.pow(2,r)?a>10?(f.warn("randstr failed uniqueness"),s):e(t,r,n,(a||0)+1):s},f.OptionControl=function(e,t){e||(e={}),t||(t="opt");var r={optionList:[],_newoption:function(n){n[t]=e,r[n.name]=n,r.optionList.push(n)}};return r["_"+t]=e,r},f.smooth=function(e,t){if((t=Math.round(t)||0)<2)return e;var r,n,a,i,o=e.length,l=2*o,s=2*t-1,c=new Array(s),u=new Array(o);for(r=0;r=l&&(a-=l*Math.floor(a/l)),a<0?a=-1-a:a>=o&&(a=l-1-a),i+=e[a]*c[n];u[r]=i}return u},f.syncOrAsync=function(e,t,r){var n;function a(){return f.syncOrAsync(e,t,r)}for(;e.length;)if((n=(0,e.splice(0,1)[0])(t))&&n.then)return n.then(a);return r&&r(t)},f.stripTrailingSlash=function(e){return"/"===e.substr(-1)?e.substr(0,e.length-1):e},f.noneOrAll=function(e,t,r){if(e){var n,a=!1,i=!0;for(n=0;n0?t:0})},f.fillArray=function(e,t,r,n){if(n=n||f.identity,f.isArrayOrTypedArray(e))for(var a=0;a1?a+o[1]:"";if(i&&(o.length>1||l.length>4||r))for(;n.test(l);)l=l.replace(n,"$1"+i+"$2");return l+s},f.TEMPLATE_STRING_REGEX=/%{([^\s%{}:]*)([:|\|][^}]*)?}/g;var R=/^\w*$/;f.templateString=function(e,t){var r={};return e.replace(f.TEMPLATE_STRING_REGEX,function(e,n){var a;return R.test(n)?a=t[n]:(r[n]=r[n]||f.nestedProperty(t,n).get,a=r[n]()),f.isValidTextValue(a)?a:""})};var I={max:10,count:0,name:"hovertemplate"};f.hovertemplateString=function(){return F.apply(I,arguments)};var z={max:10,count:0,name:"texttemplate"};f.texttemplateString=function(){return F.apply(z,arguments)};var N=/^[:|\|]/;function F(e,t,r){var n=this,i=arguments;t||(t={});var o={};return e.replace(f.TEMPLATE_STRING_REGEX,function(e,l,s){var c,u,d,h="_xother"===l||"_yother"===l,p="_xother_"===l||"_yother_"===l,y="xother_"===l||"yother_"===l,v="xother"===l||"yother"===l||h||y||p,g=l;if((h||p)&&(g=g.substring(1)),(y||p)&&(g=g.substring(0,g.length-1)),v){if(void 0===(c=t[g]))return""}else for(d=3;d=48&&o<=57,c=l>=48&&l<=57;if(s&&(n=10*n+o-48),c&&(a=10*a+l-48),!s||!c){if(n!==a)return n-a;if(o!==l)return o-l}}return a-n};var j=2e9;f.seedPseudoRandom=function(){j=2e9},f.pseudoRandom=function(){var e=j;return j=(69069*j+1)%4294967296,Math.abs(j-e)<429496729?f.pseudoRandom():j/4294967296},f.fillText=function(e,t,r){var n=Array.isArray(r)?function(e){r.push(e)}:function(e){r.text=e},a=f.extractOption(e,t,"htx","hovertext");if(f.isValidTextValue(a))return n(a);var i=f.extractOption(e,t,"tx","text");return f.isValidTextValue(i)?n(i):void 0},f.isValidTextValue=function(e){return e||0===e},f.formatPercent=function(e,t){t=t||0;for(var r=(Math.round(100*e*Math.pow(10,t))*Math.pow(.1,t)).toFixed(t)+"%",n=0;n1&&(c=1):c=0,f.strTranslate(a-c*(r+o),i-c*(n+l))+f.strScale(c)+(s?"rotate("+s+(t?"":" "+r+" "+n)+")":"")},f.setTransormAndDisplay=function(e,t){e.attr("transform",f.getTextTransform(t)),e.style("display",t.scale?null:"none")},f.ensureUniformFontSize=function(e,t){var r=f.extendFlat({},t);return r.size=Math.max(t.size,e._fullLayout.uniformtext.minsize||0),r},f.join2=function(e,t,r){var n=e.length;return n>1?e.slice(0,-1).join(t)+r+e[n-1]:e.join(t)},f.bigFont=function(e){return Math.round(1.2*e)};var B=f.getFirefoxVersion(),U=null!==B&&B<86;f.getPositionFromD3Event=function(){return U?[n.event.layerX,n.event.layerY]:[n.event.offsetX,n.event.offsetY]}},41965:function(e){"use strict";e.exports=function(e){return window&&window.process&&window.process.versions?"[object Object]"===Object.prototype.toString.call(e):"[object Object]"===Object.prototype.toString.call(e)&&Object.getPrototypeOf(e).hasOwnProperty("hasOwnProperty")}},66636:function(e,t,r){"use strict";var n=r(65487),a=/^\w*$/;e.exports=function(e,t,r,i){var o,l,s;r=r||"name",i=i||"value";var c={};t&&t.length?(s=n(e,t),l=s.get()):l=e,t=t||"";var u={};if(l)for(o=0;o2)return c[t]=2|c[t],d.set(e,null);if(f){for(o=t;o1){var t=["LOG:"];for(e=0;e1){var r=[];for(e=0;e"),"long")}},i.warn=function(){var e;if(n.logging>0){var t=["WARN:"];for(e=0;e0){var r=[];for(e=0;e"),"stick")}},i.error=function(){var e;if(n.logging>0){var t=["ERROR:"];for(e=0;e0){var r=[];for(e=0;e"),"stick")}}},77310:function(e,t,r){"use strict";var n=r(39898);e.exports=function(e,t,r){var a=e.selectAll("g."+r.replace(/\s/g,".")).data(t,function(e){return e[0].trace.uid});a.exit().remove(),a.enter().append("g").attr("class",r),a.order();var i=e.classed("rangeplot")?"nodeRangePlot3":"node3";return a.each(function(e){e[0][i]=n.select(this)}),a}},35657:function(e,t,r){"use strict";var n=r(79576);t.init2dArray=function(e,t){for(var r=new Array(e),n=0;nt/2?e-Math.round(e/t)*t:e}}},65487:function(e,t,r){"use strict";var n=r(92770),a=r(73627).isArrayOrTypedArray;function i(e,t){return function(){var r,n,o,l,s,c=e;for(l=0;l/g),s=0;si||c===a||cl||t&&s(e))}:function(e,t){var s=e[0],c=e[1];if(s===a||si||c===a||cl)return!1;var u,f,d,h,p,y=r.length,v=r[0][0],g=r[0][1],m=0;for(u=1;uMath.max(f,v)||c>Math.max(d,g)))if(cu||Math.abs(n(o,d))>a)return!0;return!1},i.filter=function(e,t){var r=[e[0]],n=0,a=0;function o(o){e.push(o);var l=r.length,s=n;r.splice(a+1);for(var c=s+1;c1&&o(e.pop());return{addPt:o,raw:e,filtered:r}}},45142:function(e,t,r){"use strict";var n=r(92770),a=r(35791);e.exports=function(e){var t;if("string"!=typeof(t=e&&e.hasOwnProperty("userAgent")?e.userAgent:function(){var e;"undefined"!=typeof navigator&&(e=navigator.userAgent);e&&e.headers&&"string"==typeof e.headers["user-agent"]&&(e=e.headers["user-agent"]);return e}()))return!0;var r=a({ua:{headers:{"user-agent":t}},tablet:!0,featureDetect:!1});if(!r)for(var i=t.split(" "),o=1;o-1;l--){var s=i[l];if("Version/"===s.substr(0,8)){var c=s.substr(8).split(".")[0];if(n(c)&&(c=+c),c>=13)return!0}}}return r}},75138:function(e){"use strict";e.exports=function(e,t){if(t instanceof RegExp){for(var r=t.toString(),n=0;na.queueLength&&(e.undoQueue.queue.shift(),e.undoQueue.index--))},startSequence:function(e){e.undoQueue=e.undoQueue||{index:0,queue:[],sequence:!1},e.undoQueue.sequence=!0,e.undoQueue.beginSequence=!0},stopSequence:function(e){e.undoQueue=e.undoQueue||{index:0,queue:[],sequence:!1},e.undoQueue.sequence=!1,e.undoQueue.beginSequence=!1},undo:function(e){var t,r;if(!(void 0===e.undoQueue||isNaN(e.undoQueue.index)||e.undoQueue.index<=0)){for(e.undoQueue.index--,t=e.undoQueue.queue[e.undoQueue.index],e.undoQueue.inSequence=!0,r=0;r=e.undoQueue.queue.length)){for(t=e.undoQueue.queue[e.undoQueue.index],e.undoQueue.inSequence=!0,r=0;rt}function u(e,t){return e>=t}t.findBin=function(e,t,r){if(n(t.start))return r?Math.ceil((e-t.start)/t.size-1e-9)-1:Math.floor((e-t.start)/t.size+1e-9);var i,o,f=0,d=t.length,h=0,p=d>1?(t[d-1]-t[0])/(d-1):1;for(o=p>=0?r?l:s:r?u:c,e+=1e-9*p*(r?-1:1)*(p>=0?1:-1);f90&&a.log("Long binary search..."),f-1},t.sorterAsc=function(e,t){return e-t},t.sorterDes=function(e,t){return t-e},t.distinctVals=function(e){var r,n=e.slice();for(n.sort(t.sorterAsc),r=n.length-1;r>-1&&n[r]===o;r--);for(var a,i=n[r]-n[0]||1,l=i/(r||1)/1e4,s=[],c=0;c<=r;c++){var u=n[c],f=u-a;void 0===a?(s.push(u),a=u):f>l&&(i=Math.min(i,f),s.push(u),a=u)}return{vals:s,minDiff:i}},t.roundUp=function(e,t,r){for(var n,a=0,i=t.length-1,o=0,l=r?0:1,s=r?1:0,c=r?Math.ceil:Math.floor;a0&&(n=1),r&&n)return e.sort(t)}return n?e:e.reverse()},t.findIndexOfMin=function(e,t){t=t||i;for(var r,n=1/0,a=0;ai.length)&&(o=i.length),n(r)||(r=!1),a(i[0])){for(s=new Array(o),l=0;le.length-1)return e[e.length-1];var r=t%1;return r*e[Math.ceil(t)]+(1-r)*e[Math.floor(t)]}},63893:function(e,t,r){"use strict";var n=r(39898),a=r(71828),i=a.strTranslate,o=r(77922),l=r(18783).LINE_SPACING,s=/([^$]*)([$]+[^$]*[$]+)([^$]*)/;t.convertToTspans=function(e,r,v){var S=e.text(),L=!e.attr("data-notex")&&r&&r._context.typesetMath&&"undefined"!=typeof MathJax&&S.match(s),D=n.select(e.node().parentNode);if(!D.empty()){var P=e.attr("class")?e.attr("class").split(" ")[0]:"text";return P+="-math",D.selectAll("svg."+P).remove(),D.selectAll("g."+P+"-group").remove(),e.style("display",null).attr({"data-unformatted":S,"data-math":"N"}),L?(r&&r._promises||[]).push(new Promise(function(t){e.style("display","none");var r=parseInt(e.node().style.fontSize,10),o={fontSize:r};!function(e,t,r){var i,o,l,s,d=parseInt((MathJax.version||"").split(".")[0]);if(2!==d&&3!==d)return void a.warn("No MathJax version:",MathJax.version);var h=function(){var r="math-output-"+a.randstr({},64),i=(s=n.select("body").append("div").attr({id:r}).style({visibility:"hidden",position:"absolute","font-size":t.fontSize+"px"}).text(e.replace(c,"\\lt ").replace(u,"\\gt "))).node();return 2===d?MathJax.Hub.Typeset(i):MathJax.typeset([i])},p=function(){var t=s.select(2===d?".MathJax_SVG":".MathJax"),i=!t.empty()&&s.select("svg").node();if(i){var o,l=i.getBoundingClientRect();o=2===d?n.select("body").select("#MathJax_SVG_glyphs"):t.select("defs"),r(t,o,l)}else a.log("There was an error in the tex syntax.",e),r();s.remove()};2===d?MathJax.Hub.Queue(function(){o=a.extendDeepAll({},MathJax.Hub.config),l=MathJax.Hub.processSectionDelay,void 0!==MathJax.Hub.processSectionDelay&&(MathJax.Hub.processSectionDelay=0);return MathJax.Hub.Config({messageStyle:"none",tex2jax:{inlineMath:f},displayAlign:"left"})},function(){if("SVG"!==(i=MathJax.Hub.config.menuSettings.renderer))return MathJax.Hub.setRenderer("SVG")},h,p,function(){if("SVG"!==i)return MathJax.Hub.setRenderer(i)},function(){void 0!==l&&(MathJax.Hub.processSectionDelay=l);return MathJax.Hub.Config(o)}):3===d&&(!function(){o=a.extendDeepAll({},MathJax.config),MathJax.config.tex||(MathJax.config.tex={});MathJax.config.tex.inlineMath=f}(),"svg"!==(i=MathJax.config.startup.output)&&(MathJax.config.startup.output="svg"),MathJax.startup.defaultReady(),MathJax.startup.promise.then(function(){h(),p(),"svg"!==i&&(MathJax.config.startup.output=i),MathJax.config=o}))}(L[2],o,function(n,a,o){D.selectAll("svg."+P).remove(),D.selectAll("g."+P+"-group").remove();var l=n&&n.select("svg");if(!l||!l.node())return E(),void t();var s=D.append("g").classed(P+"-group",!0).attr({"pointer-events":"none","data-unformatted":S,"data-math":"Y"});s.node().appendChild(l.node()),a&&a.node()&&l.node().insertBefore(a.node().cloneNode(!0),l.node().firstChild);var c=o.width,u=o.height;l.attr({class:P,height:u,preserveAspectRatio:"xMinYMin meet"}).style({overflow:"visible","pointer-events":"none"});var f=e.node().style.fill||"black",d=l.select("g");d.attr({fill:f,stroke:f});var h=d.node().getBoundingClientRect(),p=h.width,y=h.height;(p>c||y>u)&&(l.style("overflow","hidden"),p=(h=l.node().getBoundingClientRect()).width,y=h.height);var g=+e.attr("x"),m=+e.attr("y"),x=-(r||e.node().getBoundingClientRect().height)/4;if("y"===P[0])s.attr({transform:"rotate("+[-90,g,m]+")"+i(-p/2,x-y/2)});else if("l"===P[0])m=x-y/2;else if("a"===P[0]&&0!==P.indexOf("atitle"))g=0,m=x;else{var b=e.attr("text-anchor");g-=p*("middle"===b?.5:"end"===b?1:0),m=m+x-y/2}l.attr({x:g,y:m}),v&&v.call(e,s),t(s)})})):E(),e}function E(){D.empty()||(P=e.attr("class")+"-math",D.select("svg."+P).remove()),e.text("").style("white-space","pre"),function(e,t){t=t.replace(g," ");var r,i=!1,s=[],c=-1;function u(){c++;var t=document.createElementNS(o.svg,"tspan");n.select(t).attr({class:"line",dy:c*l+"em"}),e.appendChild(t),r=t;var a=s;if(s=[{node:t}],a.length>1)for(var i=1;i doesnt match end tag <"+e+">. Pretending it did match.",t),r=s[s.length-1].node}else a.log("Ignoring unexpected end tag "+e+">.",t)}b.test(t)?u():(r=e,s=[{node:e}]);for(var L=t.split(m),D=0;D|>|>)/g;var f=[["$","$"],["\\(","\\)"]];var d={sup:"font-size:70%",sub:"font-size:70%",b:"font-weight:bold",i:"font-style:italic",a:"cursor:pointer",span:"",em:"font-style:italic;font-weight:bold"},h={sub:"0.3em",sup:"-0.6em"},p={sub:"-0.21em",sup:"0.42em"},y="",v=["http:","https:","mailto:","",void 0,":"],g=t.NEWLINES=/(\r\n?|\n)/g,m=/(<[^<>]*>)/,x=/<(\/?)([^ >]*)(\s+(.*))?>/i,b=/
/i;t.BR_TAG_ALL=/
/gi;var _=/(^|[\s"'])style\s*=\s*("([^"]*);?"|'([^']*);?')/i,w=/(^|[\s"'])href\s*=\s*("([^"]*)"|'([^']*)')/i,k=/(^|[\s"'])target\s*=\s*("([^"\s]*)"|'([^'\s]*)')/i,T=/(^|[\s"'])popup\s*=\s*("([\w=,]*)"|'([\w=,]*)')/i;function M(e,t){if(!e)return null;var r=e.match(t),n=r&&(r[3]||r[4]);return n&&O(n)}var A=/(^|;)\s*color:/;t.plainText=function(e,t){for(var r=void 0!==(t=t||{}).len&&-1!==t.len?t.len:1/0,n=void 0!==t.allowedTags?t.allowedTags:["br"],a="...".length,i=e.split(m),o=[],l="",s=0,c=0;ca?o.push(u.substr(0,p-a)+"..."):o.push(u.substr(0,p));break}l=""}}return o.join("")};var S={mu:"μ",amp:"&",lt:"<",gt:">",nbsp:" ",times:"×",plusmn:"±",deg:"°"},L=/&(#\d+|#x[\da-fA-F]+|[a-z]+);/g;function O(e){return e.replace(L,function(e,t){return("#"===t.charAt(0)?function(e){if(e>1114111)return;var t=String.fromCodePoint;if(t)return t(e);var r=String.fromCharCode;return e<=65535?r(e):r(55232+(e>>10),e%1024+56320)}("x"===t.charAt(1)?parseInt(t.substr(2),16):parseInt(t.substr(1),10)):S[t])||e})}function C(e){var t=encodeURI(decodeURI(e)),r=document.createElement("a"),n=document.createElement("a");r.href=e,n.href=t;var a=r.protocol,i=n.protocol;return-1!==v.indexOf(a)&&-1!==v.indexOf(i)?t:""}function D(e,t,r){var n,i,o,l=r.horizontalAlign,s=r.verticalAlign||"top",c=e.node().getBoundingClientRect(),u=t.node().getBoundingClientRect();return i="bottom"===s?function(){return c.bottom-n.height}:"middle"===s?function(){return c.top+(c.height-n.height)/2}:function(){return c.top},o="right"===l?function(){return c.right-n.width}:"center"===l?function(){return c.left+(c.width-n.width)/2}:function(){return c.left},function(){n=this.node().getBoundingClientRect();var e=o()-u.left,t=i()-u.top,l=r.gd||{};if(r.gd){l._fullLayout._calcInverseTransform(l);var s=a.apply3DTransform(l._fullLayout._invTransform)(e,t);e=s[0],t=s[1]}return this.style({top:t+"px",left:e+"px","z-index":1e3}),this}}t.convertEntities=O,t.sanitizeHTML=function(e){e=e.replace(g," ");for(var t=document.createElement("p"),r=t,a=[],i=e.split(m),o=0;oi.ts+t?s():i.timer=setTimeout(function(){s(),i.timer=null},t)},t.done=function(e){var t=r[e];return t&&t.timer?new Promise(function(e){var r=t.onDone;t.onDone=function(){r&&r(),e(),t.onDone=null}}):Promise.resolve()},t.clear=function(e){if(e)n(r[e]),delete r[e];else for(var a in r)t.clear(a)}},58163:function(e,t,r){"use strict";var n=r(92770);e.exports=function(e,t){if(e>0)return Math.log(e)/Math.LN10;var r=Math.log(Math.min(t[0],t[1]))/Math.LN10;return n(r)||(r=Math.log(Math.max(t[0],t[1]))/Math.LN10-6),r}},37815:function(e){"use strict";e.exports={moduleType:"locale",name:"en-US",dictionary:{"Click to enter Colorscale title":"Click to enter Colorscale title"},format:{date:"%m/%d/%Y"}}},92177:function(e){"use strict";e.exports={moduleType:"locale",name:"en",dictionary:{"Click to enter Colorscale title":"Click to enter Colourscale title"},format:{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"],periods:["AM","PM"],dateTime:"%a %b %e %X %Y",date:"%d/%m/%Y",time:"%H:%M:%S",decimal:".",thousands:",",grouping:[3],currency:["$",""],year:"%Y",month:"%b %Y",dayMonth:"%b %-d",dayMonthYear:"%b %-d, %Y"}}},14458:function(e,t,r){"use strict";var n=r(73972);e.exports=function(e){for(var t,r,a=n.layoutArrayContainers,i=n.layoutArrayRegexes,o=e.split("[")[0],l=0;l0&&o.log("Clearing previous rejected promises from queue."),e._promises=[]},t.cleanLayout=function(e){var r,n;e||(e={}),e.xaxis1&&(e.xaxis||(e.xaxis=e.xaxis1),delete e.xaxis1),e.yaxis1&&(e.yaxis||(e.yaxis=e.yaxis1),delete e.yaxis1),e.scene1&&(e.scene||(e.scene=e.scene1),delete e.scene1);var i=(l.subplotsRegistry.cartesian||{}).attrRegex,s=(l.subplotsRegistry.polar||{}).attrRegex,f=(l.subplotsRegistry.ternary||{}).attrRegex,d=(l.subplotsRegistry.gl3d||{}).attrRegex,y=Object.keys(e);for(r=0;r3?(E.x=1.02,E.xanchor="left"):E.x<-2&&(E.x=-.02,E.xanchor="right"),E.y>3?(E.y=1.02,E.yanchor="bottom"):E.y<-2&&(E.y=-.02,E.yanchor="top")),p(e),"rotate"===e.dragmode&&(e.dragmode="orbit"),c.clean(e),e.template&&e.template.layout&&t.cleanLayout(e.template.layout),e},t.cleanData=function(e){for(var r=0;r0)return e.substr(0,t)}t.hasParent=function(e,t){for(var r=b(t);r;){if(r in e)return!0;r=b(r)}return!1};var _=["x","y","z"];t.clearAxisTypes=function(e,t,r){for(var n=0;n1&&i.warn("Full array edits are incompatible with other edits",f);var m=r[""][""];if(c(m))t.set(null);else{if(!Array.isArray(m))return i.warn("Unrecognized full array edit value",f,m),!0;t.set(m)}return!y&&(d(v,g),h(e),!0)}var x,b,_,w,k,T,M,A,S=Object.keys(r).map(Number).sort(o),L=t.get(),O=L||[],C=u(g,f).get(),D=[],P=-1,E=O.length;for(x=0;xO.length-(M?0:1))i.warn("index out of range",f,_);else if(void 0!==T)k.length>1&&i.warn("Insertion & removal are incompatible with edits to the same index.",f,_),c(T)?D.push(_):M?("add"===T&&(T={}),O.splice(_,0,T),C&&C.splice(_,0,{})):i.warn("Unrecognized full object edit value",f,_,T),-1===P&&(P=_);else for(b=0;b=0;x--)O.splice(D[x],1),C&&C.splice(D[x],1);if(O.length?L||t.set(O):t.set(null),y)return!1;if(d(v,g),p!==a){var R;if(-1===P)R=S;else{for(E=Math.max(O.length,E),R=[],x=0;x=P);x++)R.push(_);for(x=P;x=e.data.length||a<-e.data.length)throw new Error(r+" must be valid indices for gd.data.");if(t.indexOf(a,n+1)>-1||a>=0&&t.indexOf(-e.data.length+a)>-1||a<0&&t.indexOf(e.data.length+a)>-1)throw new Error("each index in "+r+" must be unique.")}}function E(e,t,r){if(!Array.isArray(e.data))throw new Error("gd.data must be an array.");if(void 0===t)throw new Error("currentIndices is a required argument.");if(Array.isArray(t)||(t=[t]),P(e,t,"currentIndices"),void 0===r||Array.isArray(r)||(r=[r]),void 0!==r&&P(e,r,"newIndices"),void 0!==r&&t.length!==r.length)throw new Error("current and new indices must be of equal length.")}function R(e,t,r,n,i){!function(e,t,r,n){var a=o.isPlainObject(n);if(!Array.isArray(e.data))throw new Error("gd.data must be an array");if(!o.isPlainObject(t))throw new Error("update must be a key:value object");if(void 0===r)throw new Error("indices must be an integer or array of integers");for(var i in P(e,r,"indices"),t){if(!Array.isArray(t[i])||t[i].length!==r.length)throw new Error("attribute "+i+" must be an array of length equal to indices array length");if(a&&(!(i in n)||!Array.isArray(n[i])||n[i].length!==t[i].length))throw new Error("when maxPoints is set as a key:value object it must contain a 1:1 corrispondence with the keys and number of traces in the update object")}}(e,t,r,n);for(var s=function(e,t,r,n){var i,s,c,u,f,d=o.isPlainObject(n),h=[];for(var p in Array.isArray(r)||(r=[r]),r=D(r,e.data.length-1),t)for(var y=0;y-1&&-1===r.indexOf("grouptitlefont")?s(r,r.replace("titlefont","title.font")):r.indexOf("titleposition")>-1?s(r,r.replace("titleposition","title.position")):r.indexOf("titleside")>-1?s(r,r.replace("titleside","title.side")):r.indexOf("titleoffset")>-1&&s(r,r.replace("titleoffset","title.offset")):s(r,r.replace("title","title.text"));function s(t,r){e[r]=e[t],delete e[t]}}function H(e,t,r){e=o.getGraphDiv(e),_.clearPromiseQueue(e);var n={};if("string"==typeof t)n[t]=r;else{if(!o.isPlainObject(t))return o.warn("Relayout fail.",t,r),Promise.reject();n=o.extendFlat({},t)}Object.keys(n).length&&(e.changed=!0);var a=W(e,n),i=a.flags;i.calc&&(e.calcdata=void 0);var l=[d.previousPromises];i.layoutReplot?l.push(w.layoutReplot):Object.keys(n).length&&(q(e,i,a)||d.supplyDefaults(e),i.legend&&l.push(w.doLegend),i.layoutstyle&&l.push(w.layoutStyles),i.axrange&&Y(l,a.rangesAltered),i.ticks&&l.push(w.doTicksRelayout),i.modebar&&l.push(w.doModeBar),i.camera&&l.push(w.doCamera),i.colorbars&&l.push(w.doColorBars),l.push(S)),l.push(d.rehover,d.redrag,d.reselect),c.add(e,H,[e,a.undoit],H,[e,a.redoit]);var s=o.syncOrAsync(l,e);return s&&s.then||(s=Promise.resolve(e)),s.then(function(){return e.emit("plotly_relayout",a.eventData),e})}function q(e,t,r){var n=e._fullLayout;if(!t.axrange)return!1;for(var a in t)if("axrange"!==a&&t[a])return!1;for(var i in r.rangesAltered){var o=h.id2name(i),l=e.layout[o],s=n[o];if(s.autorange=l.autorange,l.range&&(s.range=l.range.slice()),s.cleanRange(),s._matchGroup)for(var c in s._matchGroup)if(c!==i){var u=n[h.id2name(c)];u.autorange=s.autorange,u.range=s.range.slice(),u._input.range=s.range.slice()}}return!0}function Y(e,t){var r=t?function(e){var r=[];for(var n in t){var a=h.getFromId(e,n);if(r.push(n),-1!==(a.ticklabelposition||"").indexOf("inside")&&a._anchorAxis&&r.push(a._anchorAxis._id),a._matchGroup)for(var i in a._matchGroup)t[i]||r.push(i)}return h.draw(e,r,{skipTitle:!0})}:function(e){return h.draw(e,"redraw")};e.push(m,w.doAutoRangeAndConstraints,r,w.drawData,w.finalDraw)}var V=/^[xyz]axis[0-9]*\.range(\[[0|1]\])?$/,Z=/^[xyz]axis[0-9]*\.autorange$/,G=/^[xyz]axis[0-9]*\.domain(\[[0|1]\])?$/;function W(e,t){var r,n,a,i=e.layout,s=e._fullLayout,c=s._guiEditing,d=F(s._preGUI,c),p=Object.keys(t),y=h.list(e),v=o.extendDeepAll({},t),g={};for(U(t),p=Object.keys(t),n=0;n0&&"string"!=typeof E.parts[I];)I--;var z=E.parts[I],j=E.parts[I-1]+"."+z,B=E.parts.slice(0,I).join("."),H=l(e.layout,B).get(),q=l(s,B).get(),Y=E.get();if(void 0!==R){A[P]=R,S[P]="reverse"===z?R:N(Y);var W=f.getLayoutValObject(s,E.parts);if(W&&W.impliedEdits&&null!==R)for(var X in W.impliedEdits)L(o.relativeAttr(P,X),W.impliedEdits[X]);if(-1!==["width","height"].indexOf(P))if(R){L("autosize",null);var K="height"===P?"width":"height";L(K,s[K])}else s[P]=e._initialAutoSize[P];else if("autosize"===P)L("width",R?null:s.width),L("height",R?null:s.height);else if(j.match(V))D(j),l(s,B+"._inputRange").set(null);else if(j.match(Z)){D(j),l(s,B+"._inputRange").set(null);var $=l(s,B).get();$._inputDomain&&($._input.domain=$._inputDomain.slice())}else j.match(G)&&l(s,B+"._inputDomain").set(null);if("type"===z){O=H;var Q="linear"===q.type&&"log"===R,ee="log"===q.type&&"linear"===R;if(Q||ee){if(O&&O.range)if(q.autorange)Q&&(O.range=O.range[1]>O.range[0]?[1,2]:[2,1]);else{var te=O.range[0],re=O.range[1];Q?(te<=0&&re<=0&&L(B+".autorange",!0),te<=0?te=re/1e6:re<=0&&(re=te/1e6),L(B+".range[0]",Math.log(te)/Math.LN10),L(B+".range[1]",Math.log(re)/Math.LN10)):(L(B+".range[0]",Math.pow(10,te)),L(B+".range[1]",Math.pow(10,re)))}else L(B+".autorange",!0);Array.isArray(s._subplots.polar)&&s._subplots.polar.length&&s[E.parts[0]]&&"radialaxis"===E.parts[1]&&delete s[E.parts[0]]._subplot.viewInitial["radialaxis.range"],u.getComponentMethod("annotations","convertCoords")(e,q,R,L),u.getComponentMethod("images","convertCoords")(e,q,R,L)}else L(B+".autorange",!0),L(B+".range",null);l(s,B+"._inputRange").set(null)}else if(z.match(T)){var ne=l(s,P).get(),ae=(R||{}).type;ae&&"-"!==ae||(ae="linear"),u.getComponentMethod("annotations","convertCoords")(e,ne,ae,L),u.getComponentMethod("images","convertCoords")(e,ne,ae,L)}var ie=b.containerArrayMatch(P);if(ie){r=ie.array,n=ie.index;var oe=ie.property,le=W||{editType:"calc"};""!==n&&""===oe&&(b.isAddVal(R)?S[P]=null:b.isRemoveVal(R)?S[P]=(l(i,r).get()||[])[n]:o.warn("unrecognized full object value",t)),k.update(M,le),g[r]||(g[r]={});var se=g[r][n];se||(se=g[r][n]={}),se[oe]=R,delete t[P]}else"reverse"===z?(H.range?H.range.reverse():(L(B+".autorange",!0),H.range=[1,0]),q.autorange?M.calc=!0:M.plot=!0):("dragmode"===P&&(!1===R&&!1!==Y||!1!==R&&!1===Y)?M.plot=!0:s._has("scatter-like")&&s._has("regl")&&"dragmode"===P&&("lasso"===R||"select"===R)&&"lasso"!==Y&&"select"!==Y?M.plot=!0:s._has("gl2d")?M.plot=!0:W?k.update(M,W):M.calc=!0,E.set(R))}}for(r in g){b.applyContainerArrayChanges(e,d(i,r),g[r],M,d)||(M.plot=!0)}for(var ce in C){var ue=(O=h.getFromId(e,ce))&&O._constraintGroup;if(ue)for(var fe in M.calc=!0,ue)C[fe]||(h.getFromId(e,fe)._constraintShrinkable=!0)}return(J(e)||t.height||t.width)&&(M.plot=!0),(M.plot||M.calc)&&(M.layoutReplot=!0),{flags:M,rangesAltered:C,undoit:S,redoit:A,eventData:v}}function J(e){var t=e._fullLayout,r=t.width,n=t.height;return e.layout.autosize&&d.plotAutoSize(e,e.layout,t),t.width!==r||t.height!==n}function X(e,r,n,a){e=o.getGraphDiv(e),_.clearPromiseQueue(e),o.isPlainObject(r)||(r={}),o.isPlainObject(n)||(n={}),Object.keys(r).length&&(e.changed=!0),Object.keys(n).length&&(e.changed=!0);var i=_.coerceTraceIndices(e,a),l=B(e,o.extendFlat({},r),i),s=l.flags,u=W(e,o.extendFlat({},n)),f=u.flags;(s.calc||f.calc)&&(e.calcdata=void 0),s.clearAxisTypes&&_.clearAxisTypes(e,i,n);var h=[];f.layoutReplot?h.push(w.layoutReplot):s.fullReplot?h.push(t._doPlot):(h.push(d.previousPromises),q(e,f,u)||d.supplyDefaults(e),s.style&&h.push(w.doTraceStyle),(s.colorbars||f.colorbars)&&h.push(w.doColorBars),f.legend&&h.push(w.doLegend),f.layoutstyle&&h.push(w.layoutStyles),f.axrange&&Y(h,u.rangesAltered),f.ticks&&h.push(w.doTicksRelayout),f.modebar&&h.push(w.doModeBar),f.camera&&h.push(w.doCamera),h.push(S)),h.push(d.rehover,d.redrag,d.reselect),c.add(e,X,[e,l.undoit,u.undoit,l.traces],X,[e,l.redoit,u.redoit,l.traces]);var p=o.syncOrAsync(h,e);return p&&p.then||(p=Promise.resolve(e)),p.then(function(){return e.emit("plotly_update",{data:l.eventData,layout:u.eventData}),e})}function K(e){return function(t){t._fullLayout._guiEditing=!0;var r=e.apply(null,arguments);return t._fullLayout._guiEditing=!1,r}}var $=[{pattern:/^hiddenlabels/,attr:"legend.uirevision"},{pattern:/^((x|y)axis\d*)\.((auto)?range|title\.text)/},{pattern:/axis\d*\.showspikes$/,attr:"modebar.uirevision"},{pattern:/(hover|drag)mode$/,attr:"modebar.uirevision"},{pattern:/^(scene\d*)\.camera/},{pattern:/^(geo\d*)\.(projection|center|fitbounds)/},{pattern:/^(ternary\d*\.[abc]axis)\.(min|title\.text)$/},{pattern:/^(polar\d*\.radialaxis)\.((auto)?range|angle|title\.text)/},{pattern:/^(polar\d*\.angularaxis)\.rotation/},{pattern:/^(mapbox\d*)\.(center|zoom|bearing|pitch)/},{pattern:/^legend\.(x|y)$/,attr:"editrevision"},{pattern:/^(shapes|annotations)/,attr:"editrevision"},{pattern:/^title\.text$/,attr:"editrevision"}],Q=[{pattern:/^selectedpoints$/,attr:"selectionrevision"},{pattern:/(^|value\.)visible$/,attr:"legend.uirevision"},{pattern:/^dimensions\[\d+\]\.constraintrange/},{pattern:/^node\.(x|y|groups)/},{pattern:/^level$/},{pattern:/(^|value\.)name$/},{pattern:/colorbar\.title\.text$/},{pattern:/colorbar\.(x|y)$/,attr:"editrevision"}];function ee(e,t){for(var r=0;r1;)if(n.pop(),void 0!==(r=l(t,n.join(".")+".uirevision").get()))return r;return t.uirevision}function re(e,t){for(var r=0;r=a.length?a[0]:a[e]:a}function s(e){return Array.isArray(i)?e>=i.length?i[0]:i[e]:i}function c(e,t){var r=0;return function(){if(e&&++r===t)return e()}}return void 0===n._frameWaitingCnt&&(n._frameWaitingCnt=0),new Promise(function(i,u){function f(){n._currentFrame&&n._currentFrame.onComplete&&n._currentFrame.onComplete();var t=n._currentFrame=n._frameQueue.shift();if(t){var r=t.name?t.name.toString():null;e._fullLayout._currentFrame=r,n._lastFrameAt=Date.now(),n._timeToNext=t.frameOpts.duration,d.transition(e,t.frame.data,t.frame.layout,_.coerceTraceIndices(e,t.frame.traces),t.frameOpts,t.transitionOpts).then(function(){t.onComplete&&t.onComplete()}),e.emit("plotly_animatingframe",{name:r,frame:t.frame,animation:{frame:t.frameOpts,transition:t.transitionOpts}})}else e.emit("plotly_animated"),window.cancelAnimationFrame(n._animationRaf),n._animationRaf=null}function h(){e.emit("plotly_animating"),n._lastFrameAt=-1/0,n._timeToNext=0,n._runningTransitions=0,n._currentFrame=null;var t=function(){n._animationRaf=window.requestAnimationFrame(t),Date.now()-n._lastFrameAt>n._timeToNext&&f()};t()}var p,y,v=0;function g(e){return Array.isArray(a)?v>=a.length?e.transitionOpts=a[v]:e.transitionOpts=a[0]:e.transitionOpts=a,v++,e}var m=[],x=null==t,b=Array.isArray(t);if(x||b||!o.isPlainObject(t)){if(x||-1!==["string","number"].indexOf(typeof t))for(p=0;p0&&TT)&&M.push(y);m=M}}m.length>0?function(t){if(0!==t.length){for(var a=0;a=0;n--)if(o.isPlainObject(t[n])){var y=t[n].name,v=(u[y]||p[y]||{}).name,g=t[n].name,m=u[v]||p[v];v&&g&&"number"==typeof g&&m&&Mt.index?-1:e.index=0;n--){if("number"==typeof(a=h[n].frame).name&&o.warn("Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings"),!a.name)for(;u[a.name="frame "+e._transitionData._counter++];);if(u[a.name]){for(i=0;i=0;r--)n=t[r],i.push({type:"delete",index:n}),l.unshift({type:"insert",index:n,value:a[n]});var s=d.modifyFrames,u=d.modifyFrames,f=[e,l],h=[e,i];return c&&c.add(e,s,f,u,h),d.modifyFrames(e,i)},t.addTraces=function e(r,n,a){r=o.getGraphDiv(r);var i,l,s=[],u=t.deleteTraces,f=e,d=[r,s],h=[r,n];for(function(e,t,r){var n,a;if(!Array.isArray(e.data))throw new Error("gd.data must be an array.");if(void 0===t)throw new Error("traces must be defined.");for(Array.isArray(t)||(t=[t]),n=0;n=0&&r=0&&r=i.length)return!1;if(2===e.dimensions){if(r++,t.length===r)return e;var o=t[r];if(!b(o))return!1;e=i[a][o]}else e=i[a]}else e=i}}return e}function b(e){return e===Math.round(e)&&e>=0}function _(){var e,t,r={};for(e in f(r,o),n.subplotsRegistry){if((t=n.subplotsRegistry[e]).layoutAttributes)if(Array.isArray(t.attr))for(var a=0;a=s.length)return!1;a=(r=(n.transformsRegistry[s[c].type]||{}).attributes)&&r[t[2]],l=3}else{var u=e._module;if(u||(u=(n.modules[e.type||i.type.dflt]||{})._module),!u)return!1;if(!(a=(r=u.attributes)&&r[o])){var f=u.basePlotModule;f&&f.attributes&&(a=f.attributes[o])}a||(a=i[o])}return x(a,t,l)},t.getLayoutValObject=function(e,t){return x(function(e,t){var r,a,i,l,s=e._basePlotModules;if(s){var c;for(r=0;r=a&&(r._input||{})._templateitemname;l&&(o=a);var s,c=t+"["+o+"]";function u(){s={},l&&(s[c]={},s[c][i]=l)}function f(e,t){l?n.nestedProperty(s[c],e).set(t):s[c+"."+e]=t}function d(){var e=s;return u(),e}return u(),{modifyBase:function(e,t){s[e]=t},modifyItem:f,getUpdateObj:d,applyUpdate:function(t,r){t&&f(t,r);var a=d();for(var i in a)n.nestedProperty(e,i).set(a[i])}}}},61549:function(e,t,r){"use strict";var n=r(39898),a=r(73972),i=r(74875),o=r(71828),l=r(33306),s=r(7901),c=r(91424),u=r(92998),f=r(64168),d=r(89298),h=r(18783),p=r(99082),y=p.enforce,v=p.clean,g=r(71739).doAutoRange,m="start",x="middle",b="end";function _(e,t,r){for(var n=0;n=e[1]||a[1]<=e[0])&&(i[0]t[0]))return!0}return!1}function w(e){var r,a,l,u,p,y,v=e._fullLayout,g=v._size,m=g.p,x=d.list(e,"",!0);if(v._paperdiv.style({width:e._context.responsive&&v.autosize&&!e._context._hasZeroWidth&&!e.layout.width?"100%":v.width+"px",height:e._context.responsive&&v.autosize&&!e._context._hasZeroHeight&&!e.layout.height?"100%":v.height+"px"}).selectAll(".main-svg").call(c.setSize,v.width,v.height),e._context.setBackground(e,v.paper_bgcolor),t.drawMainTitle(e),f.manage(e),!v._has("cartesian"))return i.previousPromises(e);function b(e,t,r){var n=e._lw/2;return"x"===e._id.charAt(0)?t?"top"===r?t._offset-m-n:t._offset+t._length+m+n:g.t+g.h*(1-(e.position||0))+n%1:t?"right"===r?t._offset+t._length+m+n:t._offset-m-n:g.l+g.w*(e.position||0)+n%1}for(r=0;rk?u.push({code:"unused",traceType:m,templateCount:w,dataCount:k}):k>w&&u.push({code:"reused",traceType:m,templateCount:w,dataCount:k})}}else u.push({code:"data"});if(function e(t,r){for(var n in t)if("_"!==n.charAt(0)){var i=t[n],o=h(t,n,r);a(i)?(Array.isArray(t)&&!1===i._template&&i.templateitemname&&u.push({code:"missing",path:o,templateitemname:i.templateitemname}),e(i,o)):Array.isArray(i)&&p(i)&&e(i,o)}}({data:v,layout:d},""),u.length)return u.map(y)}},403:function(e,t,r){"use strict";var n=r(92770),a=r(72391),i=r(74875),o=r(71828),l=r(25095),s=r(5900),c=r(70942),u=r(11506).version,f={format:{valType:"enumerated",values:["png","jpeg","webp","svg","full-json"],dflt:"png"},width:{valType:"number",min:1},height:{valType:"number",min:1},scale:{valType:"number",min:0,dflt:1},setBackground:{valType:"any",dflt:!1},imageDataOnly:{valType:"boolean",dflt:!1}};e.exports=function(e,t){var r,d,h,p;function y(e){return!(e in t)||o.validate(t[e],f[e])}if(t=t||{},o.isPlainObject(e)?(r=e.data||[],d=e.layout||{},h=e.config||{},p={}):(e=o.getGraphDiv(e),r=o.extendDeep([],e.data),d=o.extendDeep({},e.layout),h=e._context,p=e._fullLayout||{}),!y("width")&&null!==t.width||!y("height")&&null!==t.height)throw new Error("Height and width should be pixel values.");if(!y("format"))throw new Error("Export format is not "+o.join2(f.format.values,", "," or ")+".");var v={};function g(e,r){return o.coerce(t,v,f,e,r)}var m=g("format"),x=g("width"),b=g("height"),_=g("scale"),w=g("setBackground"),k=g("imageDataOnly"),T=document.createElement("div");T.style.position="absolute",T.style.left="-5000px",document.body.appendChild(T);var M=o.extendFlat({},d);x?M.width=x:null===t.width&&n(p.width)&&(M.width=p.width),b?M.height=b:null===t.height&&n(p.height)&&(M.height=p.height);var A=o.extendFlat({},h,{_exportedPlot:!0,staticPlot:!0,setBackground:w}),S=l.getRedrawFunc(T);function L(){return new Promise(function(e){setTimeout(e,l.getDelay(T._fullLayout))})}function O(){return new Promise(function(e,t){var r=s(T,m,_),n=T._fullLayout.width,f=T._fullLayout.height;function d(){a.purge(T),document.body.removeChild(T)}if("full-json"===m){var h=i.graphJson(T,!1,"keepdata","object",!0,!0);return h.version=u,h=JSON.stringify(h),d(),e(k?h:l.encodeJSON(h))}if(d(),"svg"===m)return e(k?r:l.encodeSVG(r));var p=document.createElement("canvas");p.id=o.randstr(),c({format:m,width:n,height:f,scale:_,canvas:p,svg:r,promise:!0}).then(e).catch(t)})}return new Promise(function(e,t){a.newPlot(T,r,M,A).then(S).then(L).then(O).then(function(t){e(function(e){return k?e.replace(l.IMAGE_URL_PREFIX,""):e}(t))}).catch(function(e){t(e)})})}},84936:function(e,t,r){"use strict";var n=r(71828),a=r(74875),i=r(86281),o=r(72075).dfltConfig,l=n.isPlainObject,s=Array.isArray,c=n.isArrayOrTypedArray;function u(e,t,r,a,i,o){o=o||[];for(var f=Object.keys(e),d=0;dx.length&&a.push(h("unused",i,g.concat(x.length)));var M,A,S,L,O,C=x.length,D=Array.isArray(T);if(D&&(C=Math.min(C,T.length)),2===b.dimensions)for(A=0;Ax[A].length&&a.push(h("unused",i,g.concat(A,x[A].length)));var P=x[A].length;for(M=0;M<(D?Math.min(P,T[A].length):P);M++)S=D?T[A][M]:T,L=m[A][M],O=x[A][M],n.validate(L,S)?O!==L&&O!==+L&&a.push(h("dynamic",i,g.concat(A,M),L,O)):a.push(h("value",i,g.concat(A,M),L))}else a.push(h("array",i,g.concat(A),m[A]));else for(A=0;A1&&d.push(h("object","layout"))),a.supplyDefaults(p);for(var y=p._fullData,v=r.length,g=0;g0&&Math.round(f)===f))return{vals:a};c=f}for(var d=t.calendar,h="start"===s,p="end"===s,y=e[r+"period0"],v=i(y,d)||0,g=[],m=[],x=[],b=a.length,_=0;_M;)T=o(T,-c,d);for(;T<=M;)T=o(T,c,d);k=o(T,-c,d)}else{for(T=v+(w=Math.round((M-v)/u))*u;T>M;)T-=u;for(;T<=M;)T+=u;k=T-u}g[_]=h?k:p?T:(k+T)/2,m[_]=k,x[_]=T}return{vals:g,starts:m,ends:x}}},89502:function(e){"use strict";e.exports={xaxis:{valType:"subplotid",dflt:"x",editType:"calc+clearAxisTypes"},yaxis:{valType:"subplotid",dflt:"y",editType:"calc+clearAxisTypes"}}},71739:function(e,t,r){"use strict";var n=r(39898),a=r(92770),i=r(71828),o=r(50606).FP_SAFE,l=r(73972),s=r(91424),c=r(41675),u=c.getFromId,f=c.isLinked;function d(e,t){var r,n,a=[],o=e._fullLayout,l=p(o,t,0),s=p(o,t,1),c=v(e,t),u=c.min,f=c.max;if(0===u.length||0===f.length)return i.simpleMap(t.range,t.r2l);var d=u[0].val,y=f[0].val;for(r=1;r0&&((k=L-l(x)-s(b))>O?T/k>C&&(_=x,w=b,C=T/k):T/L>C&&(_={val:x.val,nopad:1},w={val:b.val,nopad:1},C=T/L));if(d===y){var D=d-1,P=d+1;if(A)if(0===d)a=[0,1];else{var E=(d>0?f:u).reduce(function(e,t){return Math.max(e,s(t))},0),R=d/(1-Math.min(.5,E/L));a=d>0?[0,R]:[R,0]}else a=S?[Math.max(0,D),Math.max(1,P)]:[D,P]}else A?(_.val>=0&&(_={val:0,nopad:1}),w.val<=0&&(w={val:0,nopad:1})):S&&(_.val-C*l(_)<0&&(_={val:0,nopad:1}),w.val<=0&&(w={val:1,nopad:1})),C=(w.val-_.val-h(t,x.val,b.val))/(L-l(_)-s(w)),a=[_.val-C*l(_),w.val+C*s(w)];return g&&a.reverse(),i.simpleMap(a,t.l2r||Number)}function h(e,t,r){var n=0;if(e.rangebreaks)for(var a=e.locateBreaks(t,r),i=0;i0?r.ppadplus:r.ppadminus)||r.ppad||0),S=M((e._m>0?r.ppadminus:r.ppadplus)||r.ppad||0),L=M(r.vpadplus||r.vpad),O=M(r.vpadminus||r.vpad);if(!k){if(d=1/0,h=-1/0,w)for(n=0;n0&&(d=i),i>h&&i-o&&(d=i),i>h&&i=P;n--)D(n);return{min:p,max:y,opts:r}},concatExtremes:v};var y=3;function v(e,t,r){var n,a,i,o=t._id,l=e._fullData,s=e._fullLayout,c=[],f=[];function d(e,t){for(n=0;n=r&&(c.extrapad||!o)){l=!1;break}a(t,c.val)&&c.pad<=r&&(o||!c.extrapad)&&(e.splice(s,1),s--)}if(l){var u=i&&0===t;e.push({val:t,pad:u?0:r,extrapad:!u&&o})}}function b(e){return a(e)&&Math.abs(e)=t}},89298:function(e,t,r){"use strict";var n=r(39898),a=r(92770),i=r(74875),o=r(73972),l=r(71828),s=l.strTranslate,c=r(63893),u=r(92998),f=r(7901),d=r(91424),h=r(13838),p=r(66287),y=r(50606),v=y.ONEMAXYEAR,g=y.ONEAVGYEAR,m=y.ONEMINYEAR,x=y.ONEMAXQUARTER,b=y.ONEAVGQUARTER,_=y.ONEMINQUARTER,w=y.ONEMAXMONTH,k=y.ONEAVGMONTH,T=y.ONEMINMONTH,M=y.ONEWEEK,A=y.ONEDAY,S=A/2,L=y.ONEHOUR,O=y.ONEMIN,C=y.ONESEC,D=y.MINUS_SIGN,P=y.BADNUM,E={K:"zeroline"},R={K:"gridline",L:"path"},I={K:"minor-gridline",L:"path"},z={K:"tick",L:"path"},N={K:"tick",L:"text"},F={width:["x","r","l","xl","xr"],height:["y","t","b","yt","yb"],right:["r","xr"],left:["l","xl"],top:["t","yt"],bottom:["b","yb"]},j=r(18783),B=j.MID_SHIFT,U=j.CAP_SHIFT,H=j.LINE_SPACING,q=j.OPPOSITE_SIDE,Y=3,V=e.exports={};V.setConvert=r(21994);var Z=r(4322),G=r(41675),W=G.idSort,J=G.isLinked;V.id2name=G.id2name,V.name2id=G.name2id,V.cleanId=G.cleanId,V.list=G.list,V.listIds=G.listIds,V.getFromId=G.getFromId,V.getFromTrace=G.getFromTrace;var X=r(71739);V.getAutoRange=X.getAutoRange,V.findExtremes=X.findExtremes;var K=1e-4;function $(e){var t=(e[1]-e[0])*K;return[e[0]-t,e[1]+t]}V.coerceRef=function(e,t,r,n,a,i){var o=n.charAt(n.length-1),s=r._fullLayout._subplots[o+"axis"],c=n+"ref",u={};return a||(a=s[0]||("string"==typeof i?i:i[0])),i||(i=a),s=s.concat(s.map(function(e){return e+" domain"})),u[c]={valType:"enumerated",values:s.concat(i?"string"==typeof i?[i]:i:[]),dflt:a},l.coerce(e,t,u,c)},V.getRefType=function(e){return void 0===e?e:"paper"===e?"paper":"pixel"===e?"pixel":/( domain)$/.test(e)?"domain":"range"},V.coercePosition=function(e,t,r,n,a,i){var o,s;if("range"!==V.getRefType(n))o=l.ensureNumber,s=r(a,i);else{var c=V.getFromId(t,n);s=r(a,i=c.fraction2r(i)),o=c.cleanPos}e[a]=o(s)},V.cleanPosition=function(e,t,r){return("paper"===r||"pixel"===r?l.ensureNumber:V.getFromId(t,r).cleanPos)(e)},V.redrawComponents=function(e,t){t=t||V.listIds(e);var r=e._fullLayout;function n(n,a,i,l){for(var s=o.getComponentMethod(n,a),c={},u=0;ur&&f2e-6||((r-e._forceTick0)/e._minDtick%1+1.000001)%1>2e-6)&&(e._minDtick=0)):e._minDtick=0},V.saveRangeInitial=function(e,t){for(var r=V.list(e,"",!0),n=!1,a=0;a.3*d||u(n)||u(i))){var h=r.dtick/2;e+=e+h.8){var o=Number(r.substr(1));i.exactYears>.8&&o%12==0?e=V.tickIncrement(e,"M6","reverse")+1.5*A:i.exactMonths>.8?e=V.tickIncrement(e,"M1","reverse")+15.5*A:e-=S;var s=V.tickIncrement(e,r);if(s<=n)return s}return e}(m,e,g,c,i)),v=m,0;v<=u;)v=V.tickIncrement(v,g,!1,i),0;return{start:t.c2r(m,0,i),end:t.c2r(v,0,i),size:g,_dataSpan:u-c}},V.prepMinorTicks=function(e,t,r){if(!t.minor.dtick){delete e.dtick;var n,i=t.dtick&&a(t._tmin);if(i){var o=V.tickIncrement(t._tmin,t.dtick,!0);n=[t._tmin,.99*o+.01*t._tmin]}else{var s=l.simpleMap(t.range,t.r2l);n=[s[0],.8*s[0]+.2*s[1]]}if(e.range=l.simpleMap(n,t.l2r),e._isMinor=!0,V.prepTicks(e,r),i){var c=a(t.dtick),u=a(e.dtick),f=c?t.dtick:+t.dtick.substring(1),d=u?e.dtick:+e.dtick.substring(1);c&&u?re(f,d)?f===2*M&&d===2*A&&(e.dtick=M):f===2*M&&d===3*A?e.dtick=M:f!==M||(t._input.minor||{}).nticks?ne(f/d,2.5)?e.dtick=f/2:e.dtick=f:e.dtick=A:"M"===String(t.dtick).charAt(0)?u?e.dtick="M1":re(f,d)?f>=12&&2===d&&(e.dtick="M3"):e.dtick=t.dtick:"L"===String(e.dtick).charAt(0)?"L"===String(t.dtick).charAt(0)?re(f,d)||(e.dtick=ne(f/d,2.5)?t.dtick/2:t.dtick):e.dtick="D1":"D2"===e.dtick&&+t.dtick>1&&(e.dtick=1)}e.range=t.range}void 0===t.minor._tick0Init&&(e.tick0=t.tick0)},V.prepTicks=function(e,t){var r=l.simpleMap(e.range,e.r2l,void 0,void 0,t);if("auto"===e.tickmode||!e.dtick){var n,i=e.nticks;i||("category"===e.type||"multicategory"===e.type?(n=e.tickfont?l.bigFont(e.tickfont.size||12):15,i=e._length/n):(n="y"===e._id.charAt(0)?40:80,i=l.constrain(e._length/n,4,9)+1),"radialaxis"===e._name&&(i*=2)),e.minor&&"array"!==e.minor.tickmode||"array"===e.tickmode&&(i*=100),e._roughDTick=Math.abs(r[1]-r[0])/i,V.autoTicks(e,e._roughDTick),e._minDtick>0&&e.dtick<2*e._minDtick&&(e.dtick=e._minDtick,e.tick0=e.l2r(e._forceTick0))}"period"===e.ticklabelmode&&function(e){var t;function r(){return!(a(e.dtick)||"M"!==e.dtick.charAt(0))}var n=r(),i=V.getTickFormat(e);if(i){var o=e._dtickInit!==e.dtick;/%[fLQsSMX]/.test(i)||(/%[HI]/.test(i)?(t=L,o&&!n&&e.dtick=(E?0:1);R--){var I=!R;R?(e._dtickInit=e.dtick,e._tick0Init=e.tick0):(e.minor._dtickInit=e.minor.dtick,e.minor._tick0Init=e.minor.tick0);var z=R?e:l.extendFlat({},e,e.minor);if(I?V.prepMinorTicks(z,e,t):V.prepTicks(z,t),"array"!==z.tickmode)if("sync"!==z.tickmode){var N=$(u),F=N[0],j=N[1],B=a(z.dtick),U="log"===i&&!(B||"L"===z.dtick.charAt(0)),H=V.tickFirst(z,t);if(R){if(e._tmin=H,H=j:G<=j;G=V.tickIncrement(G,W,f,o)){if(R&&q++,z.rangebreaks&&!f){if(G=h)break}if(C.length>p||G===Z)break;Z=G;var J={value:G};R?(U&&G!==(0|G)&&(J.simpleLabel=!0),s>1&&q%s&&(J.skipLabel=!0),C.push(J)):(J.minor=!0,D.push(J))}}else C=[],y=oe(e);else R?(C=[],y=le(e)):(D=[],O=le(e))}if(E&&!("inside"===e.minor.ticks&&"outside"===e.ticks||"outside"===e.minor.ticks&&"inside"===e.ticks)){for(var X=C.map(function(e){return e.value}),K=[],Q=0;Q0?(i=n-1,o=n):(i=n,o=n);var l,s=e[i].value,c=e[o].value,u=Math.abs(c-s),f=r||u,d=0;f>=m?d=u>=m&&u<=v?u:g:r===b&&f>=_?d=u>=_&&u<=x?u:b:f>=T?d=u>=T&&u<=w?u:k:r===M&&f>=M?d=M:f>=A?d=A:r===S&&f>=S?d=S:r===L&&f>=L&&(d=L),d>=u&&(d=u,l=!0);var h=a+d;if(t.rangebreaks&&d>0){for(var p=0,y=0;y<84;y++){var O=(y+.5)/84;t.maskBreaks(a*(1-O)+O*h)!==P&&p++}(d*=p/84)||(e[n].drop=!0),l&&u>M&&(d=u)}(d>0||0===n)&&(e[n].periodX=a+d/2)}}(C,e,e._definedDelta),e.rangebreaks){var ae="y"===e._id.charAt(0),ie=1;"auto"===e.tickmode&&(ie=e.tickfont?e.tickfont.size:12);var se=NaN;for(r=C.length-1;r>-1;r--)if(C[r].drop)C.splice(r,1);else{C[r].value=ze(C[r].value,e);var ce=e.c2p(C[r].value);(ae?se>ce-ie:seh||feh&&(ue.periodX=h),fe10||"01-01"!==n.substr(5)?e._tickround="d":e._tickround=+t.substr(1)%12==0?"y":"m";else if(t>=A&&i<=10||t>=15*A)e._tickround="d";else if(t>=O&&i<=16||t>=L)e._tickround="M";else if(t>=C&&i<=19||t>=O)e._tickround="S";else{var o=e.l2r(r+t).replace(/^-/,"").length;e._tickround=Math.max(i,o)-20,e._tickround<0&&(e._tickround=4)}}else if(a(t)||"L"===t.charAt(0)){var l=e.range.map(e.r2d||Number);a(t)||(t=Number(t.substr(1))),e._tickround=2-Math.floor(Math.log(t)/Math.LN10+.01);var s=Math.max(Math.abs(l[0]),Math.abs(l[1])),c=Math.floor(Math.log(s)/Math.LN10+.01),u=void 0===e.minexponent?3:e.minexponent;Math.abs(c)>u&&(xe(e.exponentformat)&&!be(c)?e._tickexponent=3*Math.round((c-1)/3):e._tickexponent=c)}else e._tickround=null}function ge(e,t,r){var n=e.tickfont||{};return{x:t,dx:0,dy:0,text:r||"",fontSize:n.size,font:n.family,fontColor:n.color}}V.autoTicks=function(e,t,r){var n;function i(e){return Math.pow(e,Math.floor(Math.log(t)/Math.LN10))}if("date"===e.type){e.tick0=l.dateTick0(e.calendar,0);var o=2*t;if(o>g)t/=g,n=i(10),e.dtick="M"+12*ye(t,n,se);else if(o>k)t/=k,e.dtick="M"+ye(t,1,ce);else if(o>A){if(e.dtick=ye(t,A,e._hasDayOfWeekBreaks?[1,2,7,14]:fe),!r){var s=V.getTickFormat(e),c="period"===e.ticklabelmode;c&&(e._rawTick0=e.tick0),/%[uVW]/.test(s)?e.tick0=l.dateTick0(e.calendar,2):e.tick0=l.dateTick0(e.calendar,1),c&&(e._dowTick0=e.tick0)}}else o>L?e.dtick=ye(t,L,ce):o>O?e.dtick=ye(t,O,ue):o>C?e.dtick=ye(t,C,ue):(n=i(10),e.dtick=ye(t,n,se))}else if("log"===e.type){e.tick0=0;var u=l.simpleMap(e.range,e.r2l);if(e._isMinor&&(t*=1.5),t>.7)e.dtick=Math.ceil(t);else if(Math.abs(u[1]-u[0])<1){var f=1.5*Math.abs((u[1]-u[0])/t);t=Math.abs(Math.pow(10,u[1])-Math.pow(10,u[0]))/f,n=i(10),e.dtick="L"+ye(t,n,se)}else e.dtick=t>.3?"D2":"D1"}else"category"===e.type||"multicategory"===e.type?(e.tick0=0,e.dtick=Math.ceil(Math.max(t,1))):Ie(e)?(e.tick0=0,n=1,e.dtick=ye(t,n,pe)):(e.tick0=0,n=i(10),e.dtick=ye(t,n,se));if(0===e.dtick&&(e.dtick=1),!a(e.dtick)&&"string"!=typeof e.dtick){var d=e.dtick;throw e.dtick=1,"ax.dtick error: "+String(d)}},V.tickIncrement=function(e,t,r,i){var o=r?-1:1;if(a(t))return l.increment(e,o*t);var s=t.charAt(0),c=o*Number(t.substr(1));if("M"===s)return l.incrementMonth(e,c,i);if("L"===s)return Math.log(Math.pow(10,e)+c)/Math.LN10;if("D"===s){var u="D2"===t?he:de,f=e+.01*o,d=l.roundUp(l.mod(f,1),u,r);return Math.floor(f)+Math.log(n.round(Math.pow(10,d),1))/Math.LN10}throw"unrecognized dtick "+String(t)},V.tickFirst=function(e,t){var r=e.r2l||Number,i=l.simpleMap(e.range,r,void 0,void 0,t),o=i[1] ")}else e._prevDateHead=s,c+="
"+s;t.text=c}(e,o,r,c):"log"===u?function(e,t,r,n,i){var o=e.dtick,s=t.x,c=e.tickformat,u="string"==typeof o&&o.charAt(0);"never"===i&&(i="");n&&"L"!==u&&(o="L3",u="L");if(c||"L"===u)t.text=_e(Math.pow(10,s),e,i,n);else if(a(o)||"D"===u&&l.mod(s+.01,1)<.1){var f=Math.round(s),d=Math.abs(f),h=e.exponentformat;"power"===h||xe(h)&&be(f)?(t.text=0===f?1:1===f?"10":"10"+(f>1?"":D)+d+"",t.fontSize*=1.25):("e"===h||"E"===h)&&d>2?t.text="1"+h+(f>0?"+":D)+d:(t.text=_e(Math.pow(10,s),e,"","fakehover"),"D1"===o&&"y"===e._id.charAt(0)&&(t.dy-=t.fontSize/6))}else{if("D"!==u)throw"unrecognized dtick "+String(o);t.text=String(Math.round(Math.pow(10,l.mod(s,1)))),t.fontSize*=.75}if("D1"===e.dtick){var p=String(t.text).charAt(0);"0"!==p&&"1"!==p||("y"===e._id.charAt(0)?t.dx-=t.fontSize/4:(t.dy+=t.fontSize/2,t.dx+=(e.range[1]>e.range[0]?1:-1)*t.fontSize*(s<0?.5:.25)))}}(e,o,0,c,y):"category"===u?function(e,t){var r=e._categories[Math.round(t.x)];void 0===r&&(r="");t.text=String(r)}(e,o):"multicategory"===u?function(e,t,r){var n=Math.round(t.x),a=e._categories[n]||[],i=void 0===a[1]?"":String(a[1]),o=void 0===a[0]?"":String(a[0]);r?t.text=o+" - "+i:(t.text=i,t.text2=o)}(e,o,r):Ie(e)?function(e,t,r,n,a){if("radians"!==e.thetaunit||r)t.text=_e(t.x,e,a,n);else{var i=t.x/180;if(0===i)t.text="0";else{var o=function(e){function t(e,t){return Math.abs(e-t)<=1e-6}var r=function(e){var r=1;for(;!t(Math.round(e*r)/r,e);)r*=10;return r}(e),n=e*r,a=Math.abs(function e(r,n){return t(n,0)?r:e(n,r%n)}(n,r));return[Math.round(n/a),Math.round(r/a)]}(i);if(o[1]>=100)t.text=_e(l.deg2rad(t.x),e,a,n);else{var s=t.x<0;1===o[1]?1===o[0]?t.text="π":t.text=o[0]+"π":t.text=["",o[0],"","⁄","",o[1],"","π"].join(""),s&&(t.text=D+t.text)}}}}(e,o,r,c,y):function(e,t,r,n,a){"never"===a?a="":"all"===e.showexponent&&Math.abs(t.x/e.dtick)<1e-6&&(a="hide");t.text=_e(t.x,e,a,n)}(e,o,0,c,y),n||(e.tickprefix&&!p(e.showtickprefix)&&(o.text=e.tickprefix+o.text),e.ticksuffix&&!p(e.showticksuffix)&&(o.text+=e.ticksuffix)),"boundaries"===e.tickson||e.showdividers){var v=function(t){var r=e.l2p(t);return r>=0&&r<=e._length?t:null};o.xbnd=[v(o.x-.5),v(o.x+e.dtick-.5)]}return o},V.hoverLabelText=function(e,t,r){r&&(e=l.extendFlat({},e,{hoverformat:r}));var n=Array.isArray(t)?t[0]:t,a=Array.isArray(t)?t[1]:void 0;if(void 0!==a&&a!==n)return V.hoverLabelText(e,n,r)+" - "+V.hoverLabelText(e,a,r);var i="log"===e.type&&n<=0,o=V.tickText(e,e.c2l(i?-n:n),"hover").text;return i?0===n?"0":D+o:o};var me=["f","p","n","μ","m","","k","M","G","T"];function xe(e){return"SI"===e||"B"===e}function be(e){return e>14||e<-15}function _e(e,t,r,n){var i=e<0,o=t._tickround,s=r||t.exponentformat||"B",c=t._tickexponent,u=V.getTickFormat(t),f=t.separatethousands;if(n){var d={exponentformat:s,minexponent:t.minexponent,dtick:"none"===t.showexponent?t.dtick:a(e)&&Math.abs(e)||1,range:"none"===t.showexponent?t.range.map(t.r2d):[0,e||1]};ve(d),o=(Number(d._tickround)||0)+4,c=d._tickexponent,t.hoverformat&&(u=t.hoverformat)}if(u)return t._numFormat(u)(e).replace(/-/g,D);var h,p=Math.pow(10,-o)/2;if("none"===s&&(c=0),(e=Math.abs(e))"+h+"":"B"===s&&9===c?e+="B":xe(s)&&(e+=me[c/3+5]));return i?D+e:e}function we(e,t){if(e){var r=Object.keys(F).reduce(function(e,r){return-1!==t.indexOf(r)&&F[r].forEach(function(t){e[t]=1}),e},{});Object.keys(e).forEach(function(t){r[t]||(1===t.length?e[t]=0:delete e[t])})}}function ke(e,t){for(var r=[],n={},a=0;a1&&r=a.min&&e=0,i=u(e,t[1])<=0;return(r||a)&&(n||i)}if(e.tickformatstops&&e.tickformatstops.length>0)switch(e.type){case"date":case"linear":for(t=0;t=o(a)))){r=n;break}break;case"log":for(t=0;t=0&&a.unshift(a.splice(n,1).shift())}});var o={false:{left:0,right:0}};return l.syncOrAsync(a.map(function(t){return function(){if(t){var n=V.getFromId(e,t);r||(r={}),r.axShifts=o,r.overlayingShiftedAx=i;var a=V.drawOne(e,n,r);return n._shiftPusher&&je(n,n._fullDepth||0,o,!0),n._r=n.range.slice(),n._rl=l.simpleMap(n._r,n.r2l),a}}}))},V.drawOne=function(e,t,r){var n,a,s,c=(r=r||{}).axShifts||{},h=r.overlayingShiftedAx||[];t.setScale();var p=e._fullLayout,y=t._id,v=y.charAt(0),g=V.counterLetter(y),m=p._plots[t._mainSubplot];if(m){if(t._shiftPusher=t.autoshift||-1!==h.indexOf(t._id)||-1!==h.indexOf(t.overlaying),t._shiftPusher&"free"===t.anchor){var x=t.linewidth/2||0;"inside"===t.ticks&&(x+=t.ticklen),je(t,x,c,!0),je(t,t.shift||0,c,!1)}!0===r.skipTitle&&void 0!==t._shift||(t._shift=function(e,t){return e.autoshift?t[e.overlaying][e.side]:e.shift||0}(t,c));var b=m[v+"axislayer"],_=t._mainLinePosition,w=_+=t._shift,k=t._mainMirrorPosition,T=t._vals=V.calcTicks(t),M=[t.mirror,w,k].join("_");for(n=0;n0?r.bottom-u:0,f))));var d=0,h=0;if(t._shiftPusher&&(d=Math.max(f,r.height>0?"l"===s?u-r.left:r.right-u:0),t.title.text!==p._dfltTitle[v]&&(h=(t._titleStandoff||0)+(t._titleScoot||0),"l"===s&&(h+=Ae(t))),t._fullDepth=Math.max(d,h)),t.automargin){n={x:0,y:0,r:0,l:0,t:0,b:0};var y=[0,1],m="number"==typeof t._shift?t._shift:0;if("x"===v){if("b"===s?n[s]=t._depth:(n[s]=t._depth=Math.max(r.width>0?u-r.top:0,f),y.reverse()),r.width>0){var x=r.right-(t._offset+t._length);x>0&&(n.xr=1,n.r=x);var b=t._offset-r.left;b>0&&(n.xl=0,n.l=b)}}else if("l"===s?(t._depth=Math.max(r.height>0?u-r.left:0,f),n[s]=t._depth-m):(t._depth=Math.max(r.height>0?r.right-u:0,f),n[s]=t._depth+m,y.reverse()),r.height>0){var _=r.bottom-(t._offset+t._length);_>0&&(n.yb=0,n.b=_);var w=t._offset-r.top;w>0&&(n.yt=1,n.t=w)}n[g]="free"===t.anchor?t.position:t._anchorAxis.domain[y[0]],t.title.text!==p._dfltTitle[v]&&(n[s]+=Ae(t)+(t.title.standoff||0)),t.mirror&&"free"!==t.anchor&&((a={x:0,y:0,r:0,l:0,t:0,b:0})[c]=t.linewidth,t.mirror&&!0!==t.mirror&&(a[c]+=f),!0===t.mirror||"ticks"===t.mirror?a[g]=t._anchorAxis.domain[y[1]]:"all"!==t.mirror&&"allticks"!==t.mirror||(a[g]=[t._counterDomainMin,t._counterDomainMax][y[1]]))}se&&(l=o.getComponentMethod("rangeslider","autoMarginOpts")(e,t)),"string"==typeof t.automargin&&(we(n,t.automargin),we(a,t.automargin)),i.autoMargin(e,Oe(t),n),i.autoMargin(e,Ce(t),a),i.autoMargin(e,De(t),l)}),l.syncOrAsync(oe)}}function ce(e){var r=y+(e||"tick");return A[r]||(A[r]=function(e,t){var r,n,a,i;e._selections[t].size()?(r=1/0,n=-1/0,a=1/0,i=-1/0,e._selections[t].each(function(){var e=Le(this),t=d.bBox(e.node().parentNode);r=Math.min(r,t.top),n=Math.max(n,t.bottom),a=Math.min(a,t.left),i=Math.max(i,t.right)})):(r=0,n=0,a=0,i=0);return{top:r,bottom:n,left:a,right:i,height:n-r,width:i-a}}(t,r)),A[r]}},V.getTickSigns=function(e,t){var r=e._id.charAt(0),n={x:"top",y:"right"}[r],a=e.side===n?1:-1,i=[-1,1,a,-a];return"inside"!==(t?(e.minor||{}).ticks:e.ticks)==("x"===r)&&(i=i.map(function(e){return-e})),e.side&&i.push({l:-1,t:-1,r:1,b:1}[e.side.charAt(0)]),i},V.makeTransTickFn=function(e){return"x"===e._id.charAt(0)?function(t){return s(e._offset+e.l2p(t.x),0)}:function(t){return s(0,e._offset+e.l2p(t.x))}},V.makeTransTickLabelFn=function(e){var t=function(e){var t=e.ticklabelposition||"",r=function(e){return-1!==t.indexOf(e)},n=r("top"),a=r("left"),i=r("right"),o=r("bottom"),l=r("inside"),s=o||a||n||i;if(!s&&!l)return[0,0];var c=e.side,u=s?(e.tickwidth||0)/2:0,f=Y,d=e.tickfont?e.tickfont.size:12;(o||n)&&(u+=d*U,f+=(e.linewidth||0)/2);(a||i)&&(u+=(e.linewidth||0)/2,f+=Y);l&&"top"===c&&(f-=d*(1-U));(a||n)&&(u=-u);"bottom"!==c&&"right"!==c||(f=-f);return[s?u:0,l?f:0]}(e),r=t[0],n=t[1];return"x"===e._id.charAt(0)?function(t){return s(r+e._offset+e.l2p(Te(t)),n)}:function(t){return s(n,r+e._offset+e.l2p(Te(t)))}},V.makeTickPath=function(e,t,r,n){n||(n={});var a=n.minor;if(a&&!e.minor)return"";var i=void 0!==n.len?n.len:a?e.minor.ticklen:e.ticklen,o=e._id.charAt(0),l=(e.linewidth||1)/2;return"x"===o?"M0,"+(t+l*r)+"v"+i*r:"M"+(t+l*r)+",0h"+i*r},V.makeLabelFns=function(e,t,r){var n=e.ticklabelposition||"",i=function(e){return-1!==n.indexOf(e)},o=i("top"),s=i("left"),c=i("right"),u=i("bottom")||s||o||c,f=i("inside"),d="inside"===n&&"inside"===e.ticks||!f&&"outside"===e.ticks&&"boundaries"!==e.tickson,h=0,p=0,y=d?e.ticklen:0;if(f?y*=-1:u&&(y=0),d&&(h+=y,r)){var v=l.deg2rad(r);h=y*Math.cos(v)+1,p=y*Math.sin(v)}e.showticklabels&&(d||e.showline)&&(h+=.2*e.tickfont.size);var g,m,x,b,_,w={labelStandoff:h+=(e.linewidth||1)/2*(f?-1:1),labelShift:p},k=0,T=e.side,M=e._id.charAt(0),A=e.tickangle;if("x"===M)b=(_=!f&&"bottom"===T||f&&"top"===T)?1:-1,f&&(b*=-1),g=p*b,m=t+h*b,x=_?1:-.2,90===Math.abs(A)&&(f?x+=B:x=-90===A&&"bottom"===T?U:90===A&&"top"===T?B:.5,k=B/2*(A/90)),w.xFn=function(e){return e.dx+g+k*e.fontSize},w.yFn=function(e){return e.dy+m+e.fontSize*x},w.anchorFn=function(e,t){if(u){if(s)return"end";if(c)return"start"}return a(t)&&0!==t&&180!==t?t*b<0!==f?"end":"start":"middle"},w.heightFn=function(t,r,n){return r<-60||r>60?-.5*n:"top"===e.side!==f?-n:0};else if("y"===M){if(b=(_=!f&&"left"===T||f&&"right"===T)?1:-1,f&&(b*=-1),g=h,m=p*b,x=0,f||90!==Math.abs(A)||(x=-90===A&&"left"===T||90===A&&"right"===T?U:.5),f){var S=a(A)?+A:0;if(0!==S){var L=l.deg2rad(S);k=Math.abs(Math.sin(L))*U*b,x=0}}w.xFn=function(e){return e.dx+t-(g+e.fontSize*x)*b+k*e.fontSize},w.yFn=function(e){return e.dy+m+e.fontSize*B},w.anchorFn=function(e,t){return a(t)&&90===Math.abs(t)?"middle":_?"end":"start"},w.heightFn=function(t,r,n){return"right"===e.side&&(r*=-1),r<-30?-n:r<30?-.5*n:0}}return w},V.drawTicks=function(e,t,r){r=r||{};var a=t._id+"tick",i=[].concat(t.minor&&t.minor.ticks?r.vals.filter(function(e){return e.minor&&!e.noTick}):[]).concat(t.ticks?r.vals.filter(function(e){return!e.minor&&!e.noTick}):[]),o=r.layer.selectAll("path."+a).data(i,Me);o.exit().remove(),o.enter().append("path").classed(a,1).classed("ticks",1).classed("crisp",!1!==r.crisp).each(function(e){return f.stroke(n.select(this),e.minor?t.minor.tickcolor:t.tickcolor)}).style("stroke-width",function(r){return d.crispRound(e,r.minor?t.minor.tickwidth:t.tickwidth,1)+"px"}).attr("d",r.path).style("display",null),Fe(t,[z]),o.attr("transform",r.transFn)},V.drawGrid=function(e,t,r){if(r=r||{},"sync"!==t.tickmode){var a=t._id+"grid",i=t.minor&&t.minor.showgrid,o=i?r.vals.filter(function(e){return e.minor}):[],l=t.showgrid?r.vals.filter(function(e){return!e.minor}):[],s=r.counterAxis;if(s&&V.shouldShowZeroLine(e,t,s))for(var c="array"===t.tickmode,u=0;u=0;g--){var m=g?y:v;if(m){var x=m.selectAll("path."+a).data(g?l:o,Me);x.exit().remove(),x.enter().append("path").classed(a,1).classed("crisp",!1!==r.crisp),x.attr("transform",r.transFn).attr("d",r.path).each(function(e){return f.stroke(n.select(this),e.minor?t.minor.gridcolor:t.gridcolor||"#ddd")}).style("stroke-dasharray",function(e){return d.dashStyle(e.minor?t.minor.griddash:t.griddash,e.minor?t.minor.gridwidth:t.gridwidth)}).style("stroke-width",function(e){return(e.minor?p:t._gw)+"px"}).style("display",null),"function"==typeof r.path&&x.attr("d",r.path)}}Fe(t,[R,I])}},V.drawZeroLine=function(e,t,r){r=r||r;var n=t._id+"zl",a=V.shouldShowZeroLine(e,t,r.counterAxis),i=r.layer.selectAll("path."+n).data(a?[{x:0,id:t._id}]:[]);i.exit().remove(),i.enter().append("path").classed(n,1).classed("zl",1).classed("crisp",!1!==r.crisp).each(function(){r.layer.selectAll("path").sort(function(e,t){return W(e.id,t.id)})}),i.attr("transform",r.transFn).attr("d",r.path).call(f.stroke,t.zerolinecolor||f.defaultLine).style("stroke-width",d.crispRound(e,t.zerolinewidth,t._gw||1)+"px").style("display",null),Fe(t,[E])},V.drawLabels=function(e,t,r){r=r||{};var i=e._fullLayout,o=t._id,u=o.charAt(0),f=r.cls||o+"tick",h=r.vals.filter(function(e){return e.text}),p=r.labelFns,y=r.secondary?0:t.tickangle,v=(t._prevTickAngles||{})[f],g=r.layer.selectAll("g."+f).data(t.showticklabels?h:[],Me),m=[];function x(e,i){e.each(function(e){var o=n.select(this),l=o.select(".text-math-group"),u=p.anchorFn(e,i),f=r.transFn.call(o.node(),e)+(a(i)&&0!=+i?" rotate("+i+","+p.xFn(e)+","+(p.yFn(e)-e.fontSize/2)+")":""),h=c.lineCount(o),y=H*e.fontSize,v=p.heightFn(e,a(i)?+i:0,(h-1)*y);if(v&&(f+=s(0,v)),l.empty()){var g=o.select("text");g.attr({transform:f,"text-anchor":u}),g.style("opacity",1),t._adjustTickLabelsOverflow&&t._adjustTickLabelsOverflow()}else{var m=d.bBox(l.node()).width*{end:-.5,start:.5}[u];l.attr("transform",f+s(m,0))}})}g.enter().append("g").classed(f,1).append("text").attr("text-anchor","middle").each(function(t){var r=n.select(this),a=e._promises.length;r.call(c.positionText,p.xFn(t),p.yFn(t)).call(d.font,t.font,t.fontSize,t.fontColor).text(t.text).call(c.convertToTspans,e),e._promises[a]?m.push(e._promises.pop().then(function(){x(r,y)})):x(r,y)}),Fe(t,[N]),g.exit().remove(),r.repositionOnUpdate&&g.each(function(e){n.select(this).select("text").call(c.positionText,p.xFn(e),p.yFn(e))}),t._adjustTickLabelsOverflow=function(){var r=t.ticklabeloverflow;if(r&&"allow"!==r){var a=-1!==r.indexOf("hide"),o="x"===t._id.charAt(0),s=0,c=o?e._fullLayout.width:e._fullLayout.height;if(-1!==r.indexOf("domain")){var u=l.simpleMap(t.range,t.r2l);s=t.l2p(u[0])+t._offset,c=t.l2p(u[1])+t._offset}var f=Math.min(s,c),h=Math.max(s,c),p=t.side,y=1/0,v=-1/0;for(var m in g.each(function(e){var r=n.select(this);if(r.select(".text-math-group").empty()){var i=d.bBox(r.node()),l=0;o?i.right>h?l=1:i.lefth?l=1:i.top+(t.tickangle?0:e.fontSize/4)t["_visibleLabelMin_"+r._id]?s.style("display","none"):"tick"!==e.K||a||s.style("display",null)})})})})},x(g,v+1?v:y);var b=null;t._selections&&(t._selections[f]=g);var _=[function(){return m.length&&Promise.all(m)}];t.automargin&&i._redrawFromAutoMarginCount&&90===v?(b=90,_.push(function(){x(g,v)})):_.push(function(){if(x(g,y),h.length&&"x"===u&&!a(y)&&("log"!==t.type||"D"!==String(t.dtick).charAt(0))){b=0;var e,n=0,i=[];if(g.each(function(e){n=Math.max(n,e.fontSize);var r=t.l2p(e.x),a=Le(this),o=d.bBox(a.node());i.push({top:0,bottom:10,height:10,left:r-o.width/2,right:r+o.width/2+2,width:o.width+2})}),"boundaries"!==t.tickson&&!t.showdividers||r.secondary){var o=h.length,s=Math.abs((h[o-1].x-h[0].x)*t._m)/(o-1),c=t.ticklabelposition||"",f=function(e){return-1!==c.indexOf(e)},p=f("top"),v=f("left"),m=f("right"),_=f("bottom")||v||p||m?(t.tickwidth||0)+2*Y:0,w=s<2.5*n||"multicategory"===t.type||"realaxis"===t._name;for(e=0;e1)for(n=1;n2*o}(a,t))return"date";var v="strict"!==r.autotypenumbers;return function(e,t){for(var r=e.length,n=f(r),a=0,o=0,l={},u=0;u2*a}(a,v)?"category":function(e,t){for(var r=e.length,n=0;n=2){var l,c,u="";if(2===o.length)for(l=0;l<2;l++)if(c=b(o[l])){u=v;break}var f=a("pattern",u);if(f===v)for(l=0;l<2;l++)(c=b(o[l]))&&(t.bounds[l]=o[l]=c-1);if(f)for(l=0;l<2;l++)switch(c=o[l],f){case v:if(!n(c))return void(t.enabled=!1);if((c=+c)!==Math.floor(c)||c<0||c>=7)return void(t.enabled=!1);t.bounds[l]=o[l]=c;break;case g:if(!n(c))return void(t.enabled=!1);if((c=+c)<0||c>24)return void(t.enabled=!1);t.bounds[l]=o[l]=c}if(!1===r.autorange){var d=r.range;if(d[0]d[1])return void(t.enabled=!1)}else if(o[0]>d[0]&&o[1]n?1:-1:+(e.substr(1)||1)-+(t.substr(1)||1)},t.ref2id=function(e){return!!/^[xyz]/.test(e)&&e.split(" ")[0]},t.isLinked=function(e,t){return i(t,e._axisMatchGroups)||i(t,e._axisConstraintGroups)}},15258:function(e){"use strict";e.exports=function(e,t,r,n){if("category"===t.type){var a,i=e.categoryarray,o=Array.isArray(i)&&i.length>0;o&&(a="array");var l,s=r("categoryorder",a);"array"===s&&(l=r("categoryarray")),o||"array"!==s||(s=t.categoryorder="trace"),"trace"===s?t._initialCategories=[]:"array"===s?t._initialCategories=l.slice():(l=function(e,t){var r,n,a,i=t.dataAttr||e._id.charAt(0),o={};if(t.axData)r=t.axData;else for(r=[],n=0;nn?a.substr(n):i.substr(r))+o:a+i+e*t:o}function v(e,t){for(var r=t._size,n=r.h/r.w,a={},i=Object.keys(e),o=0;oc*x)||k)for(r=0;rE&&ND&&(D=N);d/=(D-C)/(2*P),C=s.l2r(C),D=s.l2r(D),s.range=s._input.range=S=0?Math.min(e,.9):1/(1/Math.max(e,-.3)+3.222))}function j(e,t,r,n,a){return e.append("path").attr("class","zoombox").style({fill:t>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("transform",c(r,n)).attr("d",a+"Z")}function B(e,t,r){return e.append("path").attr("class","zoombox-corners").style({fill:f.background,stroke:f.defaultLine,"stroke-width":1,opacity:0}).attr("transform",c(t,r)).attr("d","M0,0Z")}function U(e,t,r,n,a,i){e.attr("d",n+"M"+r.l+","+r.t+"v"+r.h+"h"+r.w+"v-"+r.h+"h-"+r.w+"Z"),H(e,t,a,i)}function H(e,t,r,n){r||(e.transition().style("fill",n>.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),t.transition().style("opacity",1).duration(200))}function q(e){n.select(e).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}function Y(e){P&&e.data&&e._context.showTips&&(a.notifier(a._(e,"Double-click to zoom back out"),"long"),P=!1)}function V(e){var t=Math.floor(Math.min(e.b-e.t,e.r-e.l,D)/2);return"M"+(e.l-3.5)+","+(e.t-.5+t)+"h3v"+-t+"h"+t+"v-3h-"+(t+3)+"ZM"+(e.r+3.5)+","+(e.t-.5+t)+"h-3v"+-t+"h"+-t+"v-3h"+(t+3)+"ZM"+(e.r+3.5)+","+(e.b+.5-t)+"h-3v"+t+"h"+-t+"v3h"+(t+3)+"ZM"+(e.l-3.5)+","+(e.b+.5-t)+"h3v"+t+"h"+t+"v3h-"+(t+3)+"Z"}function Z(e,t,r,n,i){for(var o,l,s,c,u=!1,f={},d={},h=(i||{}).xaHash,p=(i||{}).yaHash,y=0;y=0)a._fullLayout._deactivateShape(a);else{var o=a._fullLayout.clickmode;if(q(a),2!==e||ge||Ye(),ve)o.indexOf("select")>-1&&S(r,a,X,K,t.id,De),o.indexOf("event")>-1&&h.click(a,r,t.id);else if(1===e&&ge){var l=y?E:P,c="s"===y||"w"===g?0:1,f=l._name+".range["+c+"]",d=function(e,t){var r,n=e.range[t],a=Math.abs(n-e.range[1-t]);return"date"===e.type?n:"log"===e.type?(r=Math.ceil(Math.max(0,-Math.log(a)/Math.LN10))+3,i("."+r+"g")(Math.pow(10,n))):(r=Math.floor(Math.log(Math.abs(n))/Math.LN10)-Math.floor(Math.log(a)/Math.LN10)+4,i("."+String(r)+"g")(n))}(l,c),p="left",v="middle";if(l.fixedrange)return;y?(v="n"===y?"top":"bottom","right"===l.side&&(p="right")):"e"===g&&(p="right"),a._context.showAxisRangeEntryBoxes&&n.select(be).call(u.makeEditable,{gd:a,immediate:!0,background:a._fullLayout.paper_bgcolor,text:String(d),fill:l.tickfont?l.tickfont.color:"#444",horizontalAlign:p,verticalAlign:v}).on("edit",function(e){var t=l.d2r(e);void 0!==t&&s.call("_guiRelayout",a,f,t)})}}}function Re(t,r){if(e._transitioningWithDuration)return!1;var n=Math.max(0,Math.min(ee,he*t+_e)),a=Math.max(0,Math.min(te,pe*r+we)),i=Math.abs(n-_e),o=Math.abs(a-we);function l(){Se="",ke.r=ke.l,ke.t=ke.b,Oe.attr("d","M0,0Z")}if(ke.l=Math.min(_e,n),ke.r=Math.max(_e,n),ke.t=Math.min(we,a),ke.b=Math.max(we,a),re.isSubplotConstrained)i>D||o>D?(Se="xy",i/ee>o/te?(o=i*te/ee,we>a?ke.t=we-o:ke.b=we+o):(i=o*ee/te,_e>n?ke.l=_e-i:ke.r=_e+i),Oe.attr("d",V(ke))):l();else if(ne.isSubplotConstrained)if(i>D||o>D){Se="xy";var s=Math.min(ke.l/ee,(te-ke.b)/te),c=Math.max(ke.r/ee,(te-ke.t)/te);ke.l=s*ee,ke.r=c*ee,ke.b=(1-s)*te,ke.t=(1-c)*te,Oe.attr("d",V(ke))}else l();else!ie||o0){var u;if(ne.isSubplotConstrained||!ae&&1===ie.length){for(u=0;ub[1]-1/4096&&(t.domain=l),a.noneOrAll(e.domain,t.domain,l),"sync"===t.tickmode&&(t.tickmode="auto")}return r("layer"),t}},89426:function(e,t,r){"use strict";var n=r(59652);e.exports=function(e,t,r,a,i){i||(i={});var o=i.tickSuffixDflt,l=n(e);r("tickprefix")&&r("showtickprefix",l),r("ticksuffix",o)&&r("showticksuffix",l)}},42449:function(e,t,r){"use strict";var n=r(18783).FROM_BL;e.exports=function(e,t,r){void 0===r&&(r=n[e.constraintoward||"center"]);var a=[e.r2l(e.range[0]),e.r2l(e.range[1])],i=a[0]+(a[1]-a[0])*r;e.range=e._input.range=[e.l2r(i+(a[0]-i)*t),e.l2r(i+(a[1]-i)*t)],e.setScale()}},21994:function(e,t,r){"use strict";var n=r(39898),a=r(84096).g0,i=r(71828),o=i.numberFormat,l=r(92770),s=i.cleanNumber,c=i.ms2DateTime,u=i.dateTime2ms,f=i.ensureNumber,d=i.isArrayOrTypedArray,h=r(50606),p=h.FP_SAFE,y=h.BADNUM,v=h.LOG_CLIP,g=h.ONEWEEK,m=h.ONEDAY,x=h.ONEHOUR,b=h.ONEMIN,_=h.ONESEC,w=r(41675),k=r(85555),T=k.HOUR_PATTERN,M=k.WEEKDAY_PATTERN;function A(e){return Math.pow(10,e)}function S(e){return null!=e}e.exports=function(e,t){t=t||{};var r=e._id||"x",h=r.charAt(0);function L(t,r){if(t>0)return Math.log(t)/Math.LN10;if(t<=0&&r&&e.range&&2===e.range.length){var n=e.range[0],a=e.range[1];return.5*(n+a-2*v*Math.abs(n-a))}return y}function O(t,r,n,a){if((a||{}).msUTC&&l(t))return+t;var o=u(t,n||e.calendar);if(o===y){if(!l(t))return y;t=+t;var s=Math.floor(10*i.mod(t+.05,1)),c=Math.round(t-s/10);o=u(new Date(c))+s/10}return o}function C(t,r,n){return c(t,r,n||e.calendar)}function D(t){return e._categories[Math.round(t)]}function P(t){if(S(t)){if(void 0===e._categoriesMap&&(e._categoriesMap={}),void 0!==e._categoriesMap[t])return e._categoriesMap[t];e._categories.push("number"==typeof t?String(t):t);var r=e._categories.length-1;return e._categoriesMap[t]=r,r}return y}function E(t){if(e._categoriesMap)return e._categoriesMap[t]}function R(e){var t=E(e);return void 0!==t?t:l(e)?+e:void 0}function I(e){return l(e)?+e:E(e)}function z(e,t,r){return n.round(r+t*e,2)}function N(e,t,r){return(e-r)/t}var F=function(t){return l(t)?z(t,e._m,e._b):y},j=function(t){return N(t,e._m,e._b)};if(e.rangebreaks){var B="y"===h;F=function(t){if(!l(t))return y;var r=e._rangebreaks.length;if(!r)return z(t,e._m,e._b);var n=B;e.range[0]>e.range[1]&&(n=!n);for(var a=n?-1:1,i=a*t,o=0,s=0;su)){o=i<(c+u)/2?s:s+1;break}o=s+1}var f=e._B[o]||0;return isFinite(f)?z(t,e._m2,f):0},j=function(t){var r=e._rangebreaks.length;if(!r)return N(t,e._m,e._b);for(var n=0,a=0;ae._rangebreaks[a].pmax&&(n=a+1);return N(t,e._m2,e._B[n])}}e.c2l="log"===e.type?L:f,e.l2c="log"===e.type?A:f,e.l2p=F,e.p2l=j,e.c2p="log"===e.type?function(e,t){return F(L(e,t))}:F,e.p2c="log"===e.type?function(e){return A(j(e))}:j,-1!==["linear","-"].indexOf(e.type)?(e.d2r=e.r2d=e.d2c=e.r2c=e.d2l=e.r2l=s,e.c2d=e.c2r=e.l2d=e.l2r=f,e.d2p=e.r2p=function(t){return e.l2p(s(t))},e.p2d=e.p2r=j,e.cleanPos=f):"log"===e.type?(e.d2r=e.d2l=function(e,t){return L(s(e),t)},e.r2d=e.r2c=function(e){return A(s(e))},e.d2c=e.r2l=s,e.c2d=e.l2r=f,e.c2r=L,e.l2d=A,e.d2p=function(t,r){return e.l2p(e.d2r(t,r))},e.p2d=function(e){return A(j(e))},e.r2p=function(t){return e.l2p(s(t))},e.p2r=j,e.cleanPos=f):"date"===e.type?(e.d2r=e.r2d=i.identity,e.d2c=e.r2c=e.d2l=e.r2l=O,e.c2d=e.c2r=e.l2d=e.l2r=C,e.d2p=e.r2p=function(t,r,n){return e.l2p(O(t,0,n))},e.p2d=e.p2r=function(e,t,r){return C(j(e),t,r)},e.cleanPos=function(t){return i.cleanDate(t,y,e.calendar)}):"category"===e.type?(e.d2c=e.d2l=P,e.r2d=e.c2d=e.l2d=D,e.d2r=e.d2l_noadd=R,e.r2c=function(t){var r=I(t);return void 0!==r?r:e.fraction2r(.5)},e.l2r=e.c2r=f,e.r2l=I,e.d2p=function(t){return e.l2p(e.r2c(t))},e.p2d=function(e){return D(j(e))},e.r2p=e.d2p,e.p2r=j,e.cleanPos=function(e){return"string"==typeof e&&""!==e?e:f(e)}):"multicategory"===e.type&&(e.r2d=e.c2d=e.l2d=D,e.d2r=e.d2l_noadd=R,e.r2c=function(t){var r=R(t);return void 0!==r?r:e.fraction2r(.5)},e.r2c_just_indices=E,e.l2r=e.c2r=f,e.r2l=R,e.d2p=function(t){return e.l2p(e.r2c(t))},e.p2d=function(e){return D(j(e))},e.r2p=e.d2p,e.p2r=j,e.cleanPos=function(e){return Array.isArray(e)||"string"==typeof e&&""!==e?e:f(e)},e.setupMultiCategory=function(n){var a,o,l=e._traceIndices,s=e._matchGroup;if(s&&0===e._categories.length)for(var c in s)if(c!==r){var u=t[w.id2name(c)];l=l.concat(u._traceIndices)}var f=[[0,{}],[0,{}]],p=[];for(a=0;ap&&(o[n]=p),o[0]===o[1]){var c=Math.max(1,Math.abs(1e-6*o[0]));o[0]-=c,o[1]+=c}}else i.nestedProperty(e,t).set(a)},e.setScale=function(r){var n=t._size;if(e.overlaying){var a=w.getFromId({_fullLayout:t},e.overlaying);e.domain=a.domain}var i=r&&e._r?"_r":"range",o=e.calendar;e.cleanRange(i);var l,s,c=e.r2l(e[i][0],o),u=e.r2l(e[i][1],o),f="y"===h;if((f?(e._offset=n.t+(1-e.domain[1])*n.h,e._length=n.h*(e.domain[1]-e.domain[0]),e._m=e._length/(c-u),e._b=-e._m*u):(e._offset=n.l+e.domain[0]*n.w,e._length=n.w*(e.domain[1]-e.domain[0]),e._m=e._length/(u-c),e._b=-e._m*c),e._rangebreaks=[],e._lBreaks=0,e._m2=0,e._B=[],e.rangebreaks)&&(e._rangebreaks=e.locateBreaks(Math.min(c,u),Math.max(c,u)),e._rangebreaks.length)){for(l=0;lu&&(d=!d),d&&e._rangebreaks.reverse();var p=d?-1:1;for(e._m2=p*e._length/(Math.abs(u-c)-e._lBreaks),e._B.push(-e._m2*(f?u:c)),l=0;la&&(a+=7,oa&&(a+=24,o=n&&o=n&&t=l.min&&(el.max&&(l.max=n),a=!1)}a&&c.push({min:e,max:n})}};for(n=0;nr.duration?(function(){for(var r={},n=0;n rect").call(o.setTranslate,0,0).call(o.setScale,1,1),e.plot.call(o.setTranslate,t._offset,r._offset).call(o.setScale,1,1);var n=e.plot.selectAll(".scatterlayer .trace");n.selectAll(".point").call(o.setPointGroupScale,1,1),n.selectAll(".textpoint").call(o.setTextPointsScale,1,1),n.call(o.hideOutsideRangePoints,e)}function v(t,r){var n=t.plotinfo,a=n.xaxis,s=n.yaxis,c=a._length,u=s._length,f=!!t.xr1,d=!!t.yr1,h=[];if(f){var p=i.simpleMap(t.xr0,a.r2l),y=i.simpleMap(t.xr1,a.r2l),v=p[1]-p[0],g=y[1]-y[0];h[0]=(p[0]*(1-r)+r*y[0]-p[0])/(p[1]-p[0])*c,h[2]=c*(1-r+r*g/v),a.range[0]=a.l2r(p[0]*(1-r)+r*y[0]),a.range[1]=a.l2r(p[1]*(1-r)+r*y[1])}else h[0]=0,h[2]=c;if(d){var m=i.simpleMap(t.yr0,s.r2l),x=i.simpleMap(t.yr1,s.r2l),b=m[1]-m[0],_=x[1]-x[0];h[1]=(m[1]*(1-r)+r*x[1]-m[1])/(m[0]-m[1])*u,h[3]=u*(1-r+r*_/b),s.range[0]=a.l2r(m[0]*(1-r)+r*x[0]),s.range[1]=s.l2r(m[1]*(1-r)+r*x[1])}else h[1]=0,h[3]=u;l.drawOne(e,a,{skipTitle:!0}),l.drawOne(e,s,{skipTitle:!0}),l.redrawComponents(e,[a._id,s._id]);var w=f?c/h[2]:1,k=d?u/h[3]:1,T=f?h[0]:0,M=d?h[1]:0,A=f?h[0]/h[2]*c:0,S=d?h[1]/h[3]*u:0,L=a._offset-A,O=s._offset-S;n.clipRect.call(o.setTranslate,T,M).call(o.setScale,1/w,1/k),n.plot.call(o.setTranslate,L,O).call(o.setScale,w,k),o.setPointGroupScale(n.zoomScalePts,1/w,1/k),o.setTextPointsScale(n.zoomScaleTxt,1/w,1/k)}l.redrawComponents(e)}},951:function(e,t,r){"use strict";var n=r(73972).traceIs,a=r(4322);function i(e){return{v:"x",h:"y"}[e.orientation||"v"]}function o(e,t){var r=i(e),a=n(e,"box-violin"),o=n(e._fullInput||{},"candlestick");return a&&!o&&t===r&&void 0===e[r]&&void 0===e[r+"0"]}e.exports=function(e,t,r,l){r("autotypenumbers",l.autotypenumbersDflt),"-"===r("type",(l.splomStash||{}).type)&&(!function(e,t){if("-"!==e.type)return;var r,l=e._id,s=l.charAt(0);-1!==l.indexOf("scene")&&(l=s);var c=function(e,t,r){for(var n=0;n0&&(a["_"+r+"axes"]||{})[t])return a;if((a[r+"axis"]||r)===t){if(o(a,r))return a;if((a[r]||[]).length||a[r+"0"])return a}}}(t,l,s);if(!c)return;if("histogram"===c.type&&s==={v:"y",h:"x"}[c.orientation||"v"])return void(e.type="linear");var u=s+"calendar",f=c[u],d={noMultiCategory:!n(c,"cartesian")||n(c,"noMultiCategory")};"box"===c.type&&c._hasPreCompStats&&s==={h:"x",v:"y"}[c.orientation||"v"]&&(d.noMultiCategory=!0);if(d.autotypenumbers=e.autotypenumbers,o(c,s)){var h=i(c),p=[];for(r=0;r0?".":"")+i;a.isPlainObject(o)?s(o,t,l,n+1):t(l,i,o)}})}t.manageCommandObserver=function(e,r,n,o){var l={},s=!0;r&&r._commandObserver&&(l=r._commandObserver),l.cache||(l.cache={}),l.lookupTable={};var c=t.hasSimpleAPICommandBindings(e,n,l.lookupTable);if(r&&r._commandObserver){if(c)return l;if(r._commandObserver.remove)return r._commandObserver.remove(),r._commandObserver=null,l}if(c){i(e,c,l.cache),l.check=function(){if(s){var t=i(e,c,l.cache);return t.changed&&o&&void 0!==l.lookupTable[t.value]&&(l.disable(),Promise.resolve(o({value:t.value,type:c.type,prop:c.prop,traces:c.traces,index:l.lookupTable[t.value]})).then(l.enable,l.enable)),t.changed}};for(var u=["plotly_relayout","plotly_redraw","plotly_restyle","plotly_update","plotly_animatingframe","plotly_afterplot"],f=0;f=t.width-20?(i["text-anchor"]="start",i.x=5):(i["text-anchor"]="end",i.x=t._paper.attr("width")-7),r.attr(i);var o=r.select(".js-link-to-tool"),l=r.select(".js-link-spacer"),s=r.select(".js-sourcelinks");e._context.showSources&&e._context.showSources(e),e._context.showLink&&function(e,t){t.text("");var r=t.append("a").attr({"xlink:xlink:href":"#",class:"link--impt link--embedview","font-weight":"bold"}).text(e._context.linkText+" "+String.fromCharCode(187));if(e._context.sendData)r.on("click",function(){_.sendDataToCloud(e)});else{var n=window.location.pathname.split("/"),a=window.location.search;r.attr({"xlink:xlink:show":"new","xlink:xlink:href":"/"+n[2].split(".")[0]+"/"+n[1]+a})}}(e,o),l.text(o.text()&&s.text()?" - ":"")}},_.sendDataToCloud=function(e){var t=(window.PLOTLYENV||{}).BASE_URL||e._context.plotlyServerURL;if(t){e.emit("plotly_beforeexport");var r=n.select(e).append("div").attr("id","hiddenform").style("display","none"),a=r.append("form").attr({action:t+"/external",method:"post",target:"_blank"});return a.append("input").attr({type:"text",name:"data"}).node().value=_.graphJson(e,!1,"keepdata"),a.node().submit(),r.remove(),e.emit("plotly_afterexport"),!1}};var T=["days","shortDays","months","shortMonths","periods","dateTime","date","time","decimal","thousands","grouping","currency"],M=["year","month","dayMonth","dayMonthYear"];function A(e,t){var r=e._context.locale;r||(r="en-US");var n=!1,a={};function i(e){for(var r=!0,i=0;i1&&R.length>1){for(l.getComponentMethod("grid","sizeDefaults")(c,s),o=0;o15&&R.length>15&&0===s.shapes.length&&0===s.images.length,_.linkSubplots(d,s,f,n),_.cleanPlot(d,s,f,n);var j=!(!n._has||!n._has("gl2d")),B=!(!s._has||!s._has("gl2d")),U=!(!n._has||!n._has("cartesian"))||j,H=!(!s._has||!s._has("cartesian"))||B;U&&!H?n._bgLayer.remove():H&&!U&&(s._shouldCreateBgLayer=!0),n._zoomlayer&&!e._dragging&&p({_fullLayout:n}),function(e,t){var r,n=[];t.meta&&(r=t._meta={meta:t.meta,layout:{meta:t.meta}});for(var a=0;a0){var f=1-2*l;n=Math.round(f*n),a=Math.round(f*a)}}var d=_.layoutAttributes.width.min,h=_.layoutAttributes.height.min;n1,y=!t.height&&Math.abs(r.height-a)>1;(y||p)&&(p&&(r.width=n),y&&(r.height=a)),e._initialAutoSize||(e._initialAutoSize={width:n,height:a}),_.sanitizeMargins(r)},_.supplyLayoutModuleDefaults=function(e,t,r,n){var a,i,o,s=l.componentsRegistry,c=t._basePlotModules,f=l.subplotsRegistry.cartesian;for(a in s)(o=s[a]).includeBasePlot&&o.includeBasePlot(e,t);for(var d in c.length||c.push(f),t._has("cartesian")&&(l.getComponentMethod("grid","contentDefaults")(e,t),f.finalizeSubplots(e,t)),t._subplots)t._subplots[d].sort(u.subplotSort);for(i=0;i1&&(r.l/=g,r.r/=g)}if(h){var m=(r.t+r.b)/h;m>1&&(r.t/=m,r.b/=m)}var x=void 0!==r.xl?r.xl:r.x,b=void 0!==r.xr?r.xr:r.x,w=void 0!==r.yt?r.yt:r.y,k=void 0!==r.yb?r.yb:r.y;p[t]={l:{val:x,size:r.l+v},r:{val:b,size:r.r+v},b:{val:k,size:r.b+v},t:{val:w,size:r.t+v}},y[t]=1}else delete p[t],delete y[t];if(!n._replotting)return _.doAutoMargin(e)}},_.doAutoMargin=function(e){var t=e._fullLayout,r=t.width,n=t.height;t._size||(t._size={}),D(t);var a=t._size,i=t.margin,s=u.extendFlat({},a),c=i.l,f=i.r,d=i.t,p=i.b,y=t._pushmargin,v=t._pushmarginIds,g=t.minreducedwidth,m=t.minreducedheight;if(!1!==t.margin.autoexpand){for(var x in y)v[x]||delete y[x];for(var b in y.base={l:{val:0,size:c},r:{val:1,size:f},t:{val:1,size:d},b:{val:0,size:p}},y){var w=y[b].l||{},k=y[b].b||{},T=w.val,M=w.size,A=k.val,S=k.size;for(var L in y){if(o(M)&&y[L].r){var O=y[L].r.val,C=y[L].r.size;if(O>T){var P=(M*O+(C-r)*T)/(O-T),E=(C*(1-T)+(M-r)*(1-O))/(O-T);P+E>c+f&&(c=P,f=E)}}if(o(S)&&y[L].t){var R=y[L].t.val,I=y[L].t.size;if(R>A){var z=(S*R+(I-n)*A)/(R-A),N=(I*(1-A)+(S-n)*(1-R))/(R-A);z+N>p+d&&(p=z,d=N)}}}}}var F=u.constrain(r-i.l-i.r,2,g),j=u.constrain(n-i.t-i.b,2,m),B=Math.max(0,r-F),U=Math.max(0,n-j);if(B){var H=(c+f)/B;H>1&&(c/=H,f/=H)}if(U){var q=(p+d)/U;q>1&&(p/=q,d/=q)}if(a.l=Math.round(c),a.r=Math.round(f),a.t=Math.round(d),a.b=Math.round(p),a.p=Math.round(i.pad),a.w=Math.round(r)-a.l-a.r,a.h=Math.round(n)-a.t-a.b,!t._replotting&&(_.didMarginChange(s,a)||function(e){if("_redrawFromAutoMarginCount"in e._fullLayout)return!1;var t=h.list(e,"",!0);for(var r in t)if(t[r].autoshift||t[r].shift)return!0;return!1}(e))){"_redrawFromAutoMarginCount"in t?t._redrawFromAutoMarginCount++:t._redrawFromAutoMarginCount=1;var Y=3*(1+Object.keys(v).length);if(t._redrawFromAutoMarginCount0&&(e._transitioningWithDuration=!0),e._transitionData._interruptCallbacks.push(function(){n=!0}),r.redraw&&e._transitionData._interruptCallbacks.push(function(){return l.call("redraw",e)}),e._transitionData._interruptCallbacks.push(function(){e.emit("plotly_transitioninterrupted",[])});var i=0,o=0;function s(){return i++,function(){var t;o++,n||o!==i||(t=a,e._transitionData&&(function(e){if(e)for(;e.length;)e.shift()}(e._transitionData._interruptCallbacks),Promise.resolve().then(function(){if(r.redraw)return l.call("redraw",e)}).then(function(){e._transitioning=!1,e._transitioningWithDuration=!1,e.emit("plotly_transitioned",[])}).then(t)))}}r.runFn(s),setTimeout(s())})}],i=u.syncOrAsync(a,e);return i&&i.then||(i=Promise.resolve()),i.then(function(){return e})}_.didMarginChange=function(e,t){for(var r=0;r1)return!0}return!1},_.graphJson=function(e,t,r,n,a,i){(a&&t&&!e._fullData||a&&!t&&!e._fullLayout)&&_.supplyDefaults(e);var o=a?e._fullData:e.data,l=a?e._fullLayout:e.layout,s=(e._transitionData||{})._frames;function c(e,t){if("function"==typeof e)return t?"_function_":null;if(u.isPlainObject(e)){var n,a={};return Object.keys(e).sort().forEach(function(i){if(-1===["_","["].indexOf(i.charAt(0)))if("function"!=typeof e[i]){if("keepdata"===r){if("src"===i.substr(i.length-3))return}else if("keepstream"===r){if("string"==typeof(n=e[i+"src"])&&n.indexOf(":")>0&&!u.isPlainObject(e.stream))return}else if("keepall"!==r&&"string"==typeof(n=e[i+"src"])&&n.indexOf(":")>0)return;a[i]=c(e[i],t)}else t&&(a[i]="_function")}),a}return Array.isArray(e)?e.map(function(e){return c(e,t)}):u.isTypedArray(e)?u.simpleMap(e,u.identity):u.isJSDate(e)?u.ms2DateTimeLocal(+e):e}var f={data:(o||[]).map(function(e){var r=c(e);return t&&delete r.fit,r})};if(!t&&(f.layout=c(l),a)){var d=l._size;f.layout.computed={margin:{b:d.b,l:d.l,r:d.r,t:d.t}}}return s&&(f.frames=c(s)),i&&(f.config=c(e._context,!0)),"object"===n?f:JSON.stringify(f)},_.modifyFrames=function(e,t){var r,n,a,i=e._transitionData._frames,o=e._transitionData._frameHash;for(r=0;r=0;i--)if(l[i].enabled){r._indexToPoints=l[i]._indexToPoints;break}n&&n.calc&&(o=n.calc(e,r))}Array.isArray(o)&&o[0]||(o=[{x:d,y:d}]),o[0].t||(o[0].t={}),o[0].trace=r,p[t]=o}}for(I(o,c,f),a=0;a0){for(var n=[],a=0;a=u&&(d.min=0,p.min=0,v.min=0,e.aaxis&&delete e.aaxis.min,e.baxis&&delete e.baxis.min,e.caxis&&delete e.caxis.min)}function y(e,t,r,n){var a=d[t._name];function o(r,n){return i.coerce(e,t,a,r,n)}o("uirevision",n.uirevision),t.type="linear";var h=o("color"),p=h!==a.color.dflt?h:r.font.color,y=t._name.charAt(0).toUpperCase(),v="Component "+y,g=o("title.text",v);t._hovertitle=g===v?g:y,i.coerceFont(o,"title.font",{family:r.font.family,size:i.bigFont(r.font.size),color:p}),o("min"),u(e,t,o,"linear"),s(e,t,o,"linear"),l(e,t,o,"linear"),c(e,t,o,{outerTicks:!0}),o("showticklabels")&&(i.coerceFont(o,"tickfont",{family:r.font.family,size:r.font.size,color:p}),o("tickangle"),o("tickformat")),f(e,t,o,{dfltColor:h,bgColor:r.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:a}),o("hoverformat"),o("layer")}e.exports=function(e,t,r){o(e,t,r,{type:"ternary",attributes:d,handleDefaults:p,font:t.font,paper_bgcolor:t.paper_bgcolor})}},64380:function(e,t,r){"use strict";var n=r(39898),a=r(84267),i=r(73972),o=r(71828),l=o.strTranslate,s=o._,c=r(7901),u=r(91424),f=r(21994),d=r(1426).extendFlat,h=r(74875),p=r(89298),y=r(28569),v=r(30211),g=r(64505),m=g.freeMode,x=g.rectMode,b=r(92998),_=r(47322).prepSelect,w=r(47322).selectOnClick,k=r(47322).clearOutline,T=r(47322).clearSelectionsCache,M=r(85555);function A(e,t){this.id=e.id,this.graphDiv=e.graphDiv,this.init(t),this.makeFramework(t),this.aTickLayout=null,this.bTickLayout=null,this.cTickLayout=null}e.exports=A;var S=A.prototype;S.init=function(e){this.container=e._ternarylayer,this.defs=e._defs,this.layoutId=e._uid,this.traceHash={},this.layers={}},S.plot=function(e,t){var r=t[this.id],n=t._size;this._hasClipOnAxisFalse=!1;for(var a=0;aL*b?a=(i=b)*L:i=(a=x)/L,o=g*a/x,s=m*i/b,r=t.l+t.w*y-a/2,n=t.t+t.h*(1-v)-i/2,h.x0=r,h.y0=n,h.w=a,h.h=i,h.sum=_,h.xaxis={type:"linear",range:[w+2*T-_,_-w-2*k],domain:[y-o/2,y+o/2],_id:"x"},f(h.xaxis,h.graphDiv._fullLayout),h.xaxis.setScale(),h.xaxis.isPtWithinRange=function(e){return e.a>=h.aaxis.range[0]&&e.a<=h.aaxis.range[1]&&e.b>=h.baxis.range[1]&&e.b<=h.baxis.range[0]&&e.c>=h.caxis.range[1]&&e.c<=h.caxis.range[0]},h.yaxis={type:"linear",range:[w,_-k-T],domain:[v-s/2,v+s/2],_id:"y"},f(h.yaxis,h.graphDiv._fullLayout),h.yaxis.setScale(),h.yaxis.isPtWithinRange=function(){return!0};var M=h.yaxis.domain[0],A=h.aaxis=d({},e.aaxis,{range:[w,_-k-T],side:"left",tickangle:(+e.aaxis.tickangle||0)-30,domain:[M,M+s*L],anchor:"free",position:0,_id:"y",_length:a});f(A,h.graphDiv._fullLayout),A.setScale();var S=h.baxis=d({},e.baxis,{range:[_-w-T,k],side:"bottom",domain:h.xaxis.domain,anchor:"free",position:0,_id:"x",_length:a});f(S,h.graphDiv._fullLayout),S.setScale();var O=h.caxis=d({},e.caxis,{range:[_-w-k,T],side:"right",tickangle:(+e.caxis.tickangle||0)+30,domain:[M,M+s*L],anchor:"free",position:0,_id:"y",_length:a});f(O,h.graphDiv._fullLayout),O.setScale();var C="M"+r+","+(n+i)+"h"+a+"l-"+a/2+",-"+i+"Z";h.clipDef.select("path").attr("d",C),h.layers.plotbg.select("path").attr("d",C);var D="M0,"+i+"h"+a+"l-"+a/2+",-"+i+"Z";h.clipDefRelative.select("path").attr("d",D);var P=l(r,n);h.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",P),h.clipDefRelative.select("path").attr("transform",null);var E=l(r-S._offset,n+i);h.layers.baxis.attr("transform",E),h.layers.bgrid.attr("transform",E);var R=l(r+a/2,n)+"rotate(30)"+l(0,-A._offset);h.layers.aaxis.attr("transform",R),h.layers.agrid.attr("transform",R);var I=l(r+a/2,n)+"rotate(-30)"+l(0,-O._offset);h.layers.caxis.attr("transform",I),h.layers.cgrid.attr("transform",I),h.drawAxes(!0),h.layers.aline.select("path").attr("d",A.showline?"M"+r+","+(n+i)+"l"+a/2+",-"+i:"M0,0").call(c.stroke,A.linecolor||"#000").style("stroke-width",(A.linewidth||0)+"px"),h.layers.bline.select("path").attr("d",S.showline?"M"+r+","+(n+i)+"h"+a:"M0,0").call(c.stroke,S.linecolor||"#000").style("stroke-width",(S.linewidth||0)+"px"),h.layers.cline.select("path").attr("d",O.showline?"M"+(r+a/2)+","+n+"l"+a/2+","+i:"M0,0").call(c.stroke,O.linecolor||"#000").style("stroke-width",(O.linewidth||0)+"px"),h.graphDiv._context.staticPlot||h.initInteractions(),u.setClipUrl(h.layers.frontplot,h._hasClipOnAxisFalse?null:h.clipId,h.graphDiv)},S.drawAxes=function(e){var t=this.graphDiv,r=this.id.substr(7)+"title",n=this.layers,a=this.aaxis,i=this.baxis,o=this.caxis;if(this.drawAx(a),this.drawAx(i),this.drawAx(o),e){var l=Math.max(a.showticklabels?a.tickfont.size/2:0,(o.showticklabels?.75*o.tickfont.size:0)+("outside"===o.ticks?.87*o.ticklen:0)),c=(i.showticklabels?i.tickfont.size:0)+("outside"===i.ticks?i.ticklen:0)+3;n["a-title"]=b.draw(t,"a"+r,{propContainer:a,propName:this.id+".aaxis.title",placeholder:s(t,"Click to enter Component A title"),attributes:{x:this.x0+this.w/2,y:this.y0-a.title.font.size/3-l,"text-anchor":"middle"}}),n["b-title"]=b.draw(t,"b"+r,{propContainer:i,propName:this.id+".baxis.title",placeholder:s(t,"Click to enter Component B title"),attributes:{x:this.x0-c,y:this.y0+this.h+.83*i.title.font.size+c,"text-anchor":"middle"}}),n["c-title"]=b.draw(t,"c"+r,{propContainer:o,propName:this.id+".caxis.title",placeholder:s(t,"Click to enter Component C title"),attributes:{x:this.x0+this.w+c,y:this.y0+this.h+.83*o.title.font.size+c,"text-anchor":"middle"}})}},S.drawAx=function(e){var t,r=this.graphDiv,n=e._name,a=n.charAt(0),i=e._id,l=this.layers[n],s=a+"tickLayout",c=(t=e).ticks+String(t.ticklen)+String(t.showticklabels);this[s]!==c&&(l.selectAll("."+i+"tick").remove(),this[s]=c),e.setScale();var u=p.calcTicks(e),f=p.clipEnds(e,u),d=p.makeTransTickFn(e),h=p.getTickSigns(e)[2],y=o.deg2rad(30),v=h*(e.linewidth||1)/2,g=h*e.ticklen,m=this.w,x=this.h,b="b"===a?"M0,"+v+"l"+Math.sin(y)*g+","+Math.cos(y)*g:"M"+v+",0l"+Math.cos(y)*g+","+-Math.sin(y)*g,_={a:"M0,0l"+x+",-"+m/2,b:"M0,0l-"+m/2+",-"+x,c:"M0,0l-"+x+","+m/2}[a];p.drawTicks(r,e,{vals:"inside"===e.ticks?f:u,layer:l,path:b,transFn:d,crisp:!1}),p.drawGrid(r,e,{vals:f,layer:this.layers[a+"grid"],path:_,transFn:d,crisp:!1}),p.drawLabels(r,e,{vals:u,layer:l,transFn:d,labelFns:p.makeLabelFns(e,0,30)})};var O=M.MINZOOM/2+.87,C="m-0.87,.5h"+O+"v3h-"+(O+5.2)+"l"+(O/2+2.6)+",-"+(.87*O+4.5)+"l2.6,1.5l-"+O/2+","+.87*O+"Z",D="m0.87,.5h-"+O+"v3h"+(O+5.2)+"l-"+(O/2+2.6)+",-"+(.87*O+4.5)+"l-2.6,1.5l"+O/2+","+.87*O+"Z",P="m0,1l"+O/2+","+.87*O+"l2.6,-1.5l-"+(O/2+2.6)+",-"+(.87*O+4.5)+"l-"+(O/2+2.6)+","+(.87*O+4.5)+"l2.6,1.5l"+O/2+",-"+.87*O+"Z",E="m0.5,0.5h5v-2h-5v-5h-2v5h-5v2h5v5h2Z",R=!0;function I(e){n.select(e).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}S.clearOutline=function(){T(this.dragOptions),k(this.dragOptions.gd)},S.initInteractions=function(){var e,t,r,n,f,d,h,p,g,b,k,T,A=this,S=A.layers.plotbg.select("path").node(),O=A.graphDiv,z=O._fullLayout._zoomlayer;function N(e){var t={};return t[A.id+".aaxis.min"]=e.a,t[A.id+".baxis.min"]=e.b,t[A.id+".caxis.min"]=e.c,t}function F(e,t){var r=O._fullLayout.clickmode;I(O),2===e&&(O.emit("plotly_doubleclick",null),i.call("_guiRelayout",O,N({a:0,b:0,c:0}))),r.indexOf("select")>-1&&1===e&&w(t,O,[A.xaxis],[A.yaxis],A.id,A.dragOptions),r.indexOf("event")>-1&&v.click(O,t,A.id)}function j(e,t){return 1-t/A.h}function B(e,t){return 1-(e+(A.h-t)/Math.sqrt(3))/A.w}function U(e,t){return(e-(A.h-t)/Math.sqrt(3))/A.w}function H(a,i){var o=r+a*e,l=n+i*t,s=Math.max(0,Math.min(1,j(0,n),j(0,l))),c=Math.max(0,Math.min(1,B(r,n),B(o,l))),u=Math.max(0,Math.min(1,U(r,n),U(o,l))),y=(s/2+u)*A.w,v=(1-s/2-c)*A.w,m=(y+v)/2,x=v-y,_=(1-s)*A.h,w=_-x/L;x.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),T.transition().style("opacity",1).duration(200),b=!0),O.emit("plotly_relayouting",N(h))}function q(){I(O),h!==f&&(i.call("_guiRelayout",O,N(h)),R&&O.data&&O._context.showTips&&(o.notifier(s(O,"Double-click to zoom back out"),"long"),R=!1))}function Y(e,t){var r=e/A.xaxis._m,n=t/A.yaxis._m,a=[(h={a:f.a-n,b:f.b+(r+n)/2,c:f.c-(r-n)/2}).a,h.b,h.c].sort(o.sorterAsc),i=a.indexOf(h.a),s=a.indexOf(h.b),c=a.indexOf(h.c);a[0]<0&&(a[1]+a[0]/2<0?(a[2]+=a[0]+a[1],a[0]=a[1]=0):(a[2]+=a[0]/2,a[1]+=a[0]/2,a[0]=0),h={a:a[i],b:a[s],c:a[c]},t=(f.a-h.a)*A.yaxis._m,e=(f.c-h.c-f.b+h.b)*A.xaxis._m);var d=l(A.x0+e,A.y0+t);A.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",d);var p=l(-e,-t);A.clipDefRelative.select("path").attr("transform",p),A.aaxis.range=[h.a,A.sum-h.b-h.c],A.baxis.range=[A.sum-h.a-h.c,h.b],A.caxis.range=[A.sum-h.a-h.b,h.c],A.drawAxes(!1),A._hasClipOnAxisFalse&&A.plotContainer.select(".scatterlayer").selectAll(".trace").call(u.hideOutsideRangePoints,A),O.emit("plotly_relayouting",N(h))}function V(){i.call("_guiRelayout",O,N(h))}this.dragOptions={element:S,gd:O,plotinfo:{id:A.id,domain:O._fullLayout[A.id].domain,xaxis:A.xaxis,yaxis:A.yaxis},subplot:A.id,prepFn:function(i,s,u){A.dragOptions.xaxes=[A.xaxis],A.dragOptions.yaxes=[A.yaxis],e=O._fullLayout._invScaleX,t=O._fullLayout._invScaleY;var y=A.dragOptions.dragmode=O._fullLayout.dragmode;m(y)?A.dragOptions.minDrag=1:A.dragOptions.minDrag=void 0,"zoom"===y?(A.dragOptions.moveFn=H,A.dragOptions.clickFn=F,A.dragOptions.doneFn=q,function(e,t,i){var s=S.getBoundingClientRect();r=t-s.left,n=i-s.top,O._fullLayout._calcInverseTransform(O);var u=O._fullLayout._invTransform,y=o.apply3DTransform(u)(r,n);r=y[0],n=y[1],f={a:A.aaxis.range[0],b:A.baxis.range[1],c:A.caxis.range[1]},h=f,d=A.aaxis.range[1]-f.a,p=a(A.graphDiv._fullLayout[A.id].bgcolor).getLuminance(),g="M0,"+A.h+"L"+A.w/2+", 0L"+A.w+","+A.h+"Z",b=!1,k=z.append("path").attr("class","zoombox").attr("transform",l(A.x0,A.y0)).style({fill:p>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("d",g),T=z.append("path").attr("class","zoombox-corners").attr("transform",l(A.x0,A.y0)).style({fill:c.background,stroke:c.defaultLine,"stroke-width":1,opacity:0}).attr("d","M0,0Z"),A.clearOutline(O)}(0,s,u)):"pan"===y?(A.dragOptions.moveFn=Y,A.dragOptions.clickFn=F,A.dragOptions.doneFn=V,f={a:A.aaxis.range[0],b:A.baxis.range[1],c:A.caxis.range[1]},h=f,A.clearOutline(O)):(x(y)||m(y))&&_(i,s,u,A.dragOptions,y)}},S.onmousemove=function(e){v.hover(O,e,A.id),O._fullLayout._lasthover=S,O._fullLayout._hoversubplot=A.id},S.onmouseout=function(e){O._dragging||y.unhover(O,e)},y.init(this.dragOptions)}},73972:function(e,t,r){"use strict";var n=r(47769),a=r(64213),i=r(75138),o=r(41965),l=r(24401).addStyleRule,s=r(1426),c=r(9012),u=r(10820),f=s.extendFlat,d=s.extendDeepAll;function h(e){var r=e.name,a=e.categories,i=e.meta;if(t.modules[r])n.log("Type "+r+" already registered");else{t.subplotsRegistry[e.basePlotModule.name]||function(e){var r=e.name;if(t.subplotsRegistry[r])return void n.log("Plot type "+r+" already registered.");for(var a in g(e),t.subplotsRegistry[r]=e,t.componentsRegistry)b(a,e.name)}(e.basePlotModule);for(var o={},s=0;s-1&&(f[h[r]].title={text:""});for(r=0;r")?"":t.html(e).text()});return t.remove(),r}(_),_=(_=_.replace(/&(?!\w+;|\#[0-9]+;| \#x[0-9A-F]+;)/g,"&")).replace(c,"'"),a.isIE()&&(_=(_=(_=_.replace(/"/gi,"'")).replace(/(\('#)([^']*)('\))/gi,'("#$2")')).replace(/(\\')/gi,'"')),_}},75341:function(e,t,r){"use strict";var n=r(71828);e.exports=function(e,t){for(var r=0;rf+c||!n(u))}for(var h=0;hi))return t}return void 0!==r?r:e.dflt},t.coerceColor=function(e,t,r){return a(t).isValid()?t:void 0!==r?r:e.dflt},t.coerceEnumerated=function(e,t,r){return e.coerceNumber&&(t=+t),-1!==e.values.indexOf(t)?t:void 0!==r?r:e.dflt},t.getValue=function(e,t){var r;return Array.isArray(e)?t0?t+=r:u<0&&(t-=r)}return t}function R(e){var t=u,r=e.b,a=E(e);return n.inbox(r-t,a-t,_+(a-t)/(a-r)-1)}var I=e[f+"a"],z=e[d+"a"];y=Math.abs(I.r2c(I.range[1])-I.r2c(I.range[0]));var N=n.getDistanceFunction(a,h,p,function(e){return(h(e)+p(e))/2});if(n.getClosest(v,N,e),!1!==e.index&&v[e.index].p!==c){T||(O=function(e){return Math.min(M(e),e.p-m.bargroupwidth/2)},C=function(e){return Math.max(A(e),e.p+m.bargroupwidth/2)});var F=v[e.index],j=g.base?F.b+F.s:F.s;e[d+"0"]=e[d+"1"]=z.c2p(F[d],!0),e[d+"LabelVal"]=j;var B=m.extents[m.extents.round(F.p)];e[f+"0"]=I.c2p(x?O(F):B[0],!0),e[f+"1"]=I.c2p(x?C(F):B[1],!0);var U=void 0!==F.orig_p;return e[f+"LabelVal"]=U?F.orig_p:F.p,e.labelLabel=s(I,e[f+"LabelVal"],g[f+"hoverformat"]),e.valueLabel=s(z,e[d+"LabelVal"],g[d+"hoverformat"]),e.baseLabel=s(z,F.b,g[d+"hoverformat"]),e.spikeDistance=(function(e){var t=u,r=e.b,a=E(e);return n.inbox(r-t,a-t,w+(a-t)/(a-r)-1)}(F)+function(e){return D(M(e),A(e),w)}(F))/2,e[f+"Spike"]=I.c2p(F.p,!0),o(F,g,e),e.hovertemplate=g.hovertemplate,e}}function f(e,t){var r=t.mcc||e.marker.color,n=t.mlcc||e.marker.line.color,a=l(e,t);return i.opacity(r)?r:i.opacity(n)&&a?n:void 0}e.exports={hoverPoints:function(e,t,r,n,i){var o=u(e,t,r,n,i);if(o){var l=o.cd,s=l[0].trace,c=l[o.index];return o.color=f(s,c),a.getComponentMethod("errorbars","hoverInfo")(c,s,o),[o]}},hoverOnBars:u,getTraceColor:f}},60822:function(e,t,r){"use strict";e.exports={attributes:r(1486),layoutAttributes:r(43641),supplyDefaults:r(90769).supplyDefaults,crossTraceDefaults:r(90769).crossTraceDefaults,supplyLayoutDefaults:r(13957),calc:r(92290),crossTraceCalc:r(11661).crossTraceCalc,colorbar:r(4898),arraysToCalcdata:r(75341),plot:r(17295).plot,style:r(16688).style,styleOnSelect:r(16688).styleOnSelect,hoverPoints:r(95423).hoverPoints,eventData:r(58065),selectPoints:r(81974),moduleType:"trace",name:"bar",basePlotModule:r(93612),categories:["bar-like","cartesian","svg","bar","oriented","errorBarsOK","showLegend","zoomScale"],animatable:!0,meta:{}}},43641:function(e){"use strict";e.exports={barmode:{valType:"enumerated",values:["stack","group","overlay","relative"],dflt:"group",editType:"calc"},barnorm:{valType:"enumerated",values:["","fraction","percent"],dflt:"",editType:"calc"},bargap:{valType:"number",min:0,max:1,editType:"calc"},bargroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}},13957:function(e,t,r){"use strict";var n=r(73972),a=r(89298),i=r(71828),o=r(43641);e.exports=function(e,t,r){function l(r,n){return i.coerce(e,t,o,r,n)}for(var s=!1,c=!1,u=!1,f={},d=l("barmode"),h=0;h0}function S(e){return"auto"===e?0:e}function L(e,t){var r=Math.PI/180*t,n=Math.abs(Math.sin(r)),a=Math.abs(Math.cos(r));return{x:e.width*a+e.height*n,y:e.width*n+e.height*a}}function O(e,t,r,n,a,i){var o=!!i.isHorizontal,l=!!i.constrained,s=i.angle||0,c=i.anchor||"end",u="end"===c,f="start"===c,d=((i.leftToRight||0)+1)/2,h=1-d,p=a.width,y=a.height,v=Math.abs(t-e),g=Math.abs(n-r),m=v>2*_&&g>2*_?_:0;v-=2*m,g-=2*m;var x=S(s);"auto"!==s||p<=v&&y<=g||!(p>v||y>g)||(p>g||y>v)&&p.01?Y:function(e,t,r){return r&&e===t?e:Math.abs(e-t)>=2?Y(e):e>t?Math.ceil(e):Math.floor(e)};F=V(F,j,I),j=V(j,F,I),B=V(B,U,!I),U=V(U,B,!I)}var Z=M(i.ensureSingle(P,"path"),D,v,g);if(Z.style("vector-effect","non-scaling-stroke").attr("d",isNaN((j-F)*(U-B))||H&&e._context.staticPlot?"M0,0Z":"M"+F+","+B+"V"+U+"H"+j+"V"+B+"Z").call(s.setClipUrl,t.layerClipId,e),!D.uniformtext.mode&&z){var G=s.makePointStyleFns(f);s.singlePointStyle(c,Z,f,G,e)}!function(e,t,r,n,a,l,c,f,h,v,g){var w,k=t.xaxis,A=t.yaxis,C=e._fullLayout;function D(t,r,n){var a=i.ensureSingle(t,"text").text(r).attr({class:"bartext bartext-"+w,"text-anchor":"middle","data-notex":1}).call(s.font,n).call(o.convertToTspans,e);return a}var P=n[0].trace,E="h"===P.orientation,R=function(e,t,r,n,a){var o,l=t[0].trace;return o=l.texttemplate?function(e,t,r,n,a){var o=t[0].trace,l=i.castOption(o,r,"texttemplate");if(!l)return"";var s,c,f,d,h="histogram"===o.type,p="waterfall"===o.type,y="funnel"===o.type,v="h"===o.orientation;function g(e){return u(d,d.c2l(e),!0).text}v?(s="y",c=a,f="x",d=n):(s="x",c=n,f="y",d=a);var m,x=t[r],_={};_.label=x.p,_.labelLabel=_[s+"Label"]=(m=x.p,u(c,c.c2l(m),!0).text);var w=i.castOption(o,x.i,"text");(0===w||w)&&(_.text=w),_.value=x.s,_.valueLabel=_[f+"Label"]=g(x.s);var k={};b(k,o,x.i),(h||void 0===k.x)&&(k.x=v?_.value:_.label),(h||void 0===k.y)&&(k.y=v?_.label:_.value),(h||void 0===k.xLabel)&&(k.xLabel=v?_.valueLabel:_.labelLabel),(h||void 0===k.yLabel)&&(k.yLabel=v?_.labelLabel:_.valueLabel),p&&(_.delta=+x.rawS||x.s,_.deltaLabel=g(_.delta),_.final=x.v,_.finalLabel=g(_.final),_.initial=_.final-_.delta,_.initialLabel=g(_.initial)),y&&(_.value=x.s,_.valueLabel=g(_.value),_.percentInitial=x.begR,_.percentInitialLabel=i.formatPercent(x.begR),_.percentPrevious=x.difR,_.percentPreviousLabel=i.formatPercent(x.difR),_.percentTotal=x.sumR,_.percenTotalLabel=i.formatPercent(x.sumR));var T=i.castOption(o,x.i,"customdata");return T&&(_.customdata=T),i.texttemplateString(l,_,e._d3locale,k,_,o._meta||{})}(e,t,r,n,a):l.textinfo?function(e,t,r,n){var a=e[0].trace,o="h"===a.orientation,l="waterfall"===a.type,s="funnel"===a.type;function c(e){var t=o?r:n;return u(t,+e,!0).text}var f,d,h=a.textinfo,p=e[t],y=h.split("+"),v=[],g=function(e){return-1!==y.indexOf(e)};if(g("label")&&v.push((d=e[t].p,u(o?n:r,d,!0).text)),g("text")&&(0===(f=i.castOption(a,p.i,"text"))||f)&&v.push(f),l){var m=+p.rawS||p.s,x=p.v,b=x-m;g("initial")&&v.push(c(b)),g("delta")&&v.push(c(m)),g("final")&&v.push(c(x))}if(s){g("value")&&v.push(c(p.s));var _=0;g("percent initial")&&_++,g("percent previous")&&_++,g("percent total")&&_++;var w=_>1;g("percent initial")&&(f=i.formatPercent(p.begR),w&&(f+=" of initial"),v.push(f)),g("percent previous")&&(f=i.formatPercent(p.difR),w&&(f+=" of previous"),v.push(f)),g("percent total")&&(f=i.formatPercent(p.sumR),w&&(f+=" of total"),v.push(f))}return v.join("
")}(t,r,n,a):y.getValue(l.text,r),y.coerceString(m,o)}(C,n,a,k,A);w=function(e,t){var r=y.getValue(e.textposition,t);return y.coerceEnumerated(x,r)}(P,a);var I="stack"===v.mode||"relative"===v.mode,z=n[a],N=!I||z._outmost;if(R&&"none"!==w&&(!z.isBlank&&l!==c&&f!==h||"auto"!==w&&"inside"!==w)){var F=C.font,j=p.getBarColor(n[a],P),B=p.getInsideTextFont(P,a,F,j),U=p.getOutsideTextFont(P,a,F),H=r.datum();E?"log"===k.type&&H.s0<=0&&(l=k.range[0]0&&Z>0,K=V<=W&&Z<=J,$=V<=J&&Z<=W,Q=E?W>=V*(J/Z):J>=Z*(W/V);X&&(K||$||Q)?w="inside":(w="outside",q.remove(),q=null)}else w="inside";if(!q){G=i.ensureUniformFontSize(e,"outside"===w?U:B);var ee=(q=D(r,R,G)).attr("transform");if(q.attr("transform",""),Y=s.bBox(q.node()),V=Y.width,Z=Y.height,q.attr("transform",ee),V<=0||Z<=0)return void q.remove()}var te,re,ne=P.textangle;"outside"===w?(re="both"===P.constraintext||"outside"===P.constraintext,te=function(e,t,r,n,a,i){var o,l=!!i.isHorizontal,s=!!i.constrained,c=i.angle||0,u=a.width,f=a.height,d=Math.abs(t-e),h=Math.abs(n-r);o=l?h>2*_?_:0:d>2*_?_:0;var p=1;s&&(p=l?Math.min(1,h/f):Math.min(1,d/u));var y=S(c),v=L(a,y),g=(l?v.x:v.y)/2,m=(a.left+a.right)/2,x=(a.top+a.bottom)/2,b=(e+t)/2,w=(r+n)/2,k=0,M=0,A=l?T(t,e):T(r,n);return l?(b=t-A*o,k=A*g):(w=n+A*o,M=-A*g),{textX:m,textY:x,targetX:b,targetY:w,anchorX:k,anchorY:M,scale:p,rotate:y}}(l,c,f,h,Y,{isHorizontal:E,constrained:re,angle:ne})):(re="both"===P.constraintext||"inside"===P.constraintext,te=O(l,c,f,h,Y,{isHorizontal:E,constrained:re,angle:ne,anchor:P.insidetextanchor})),te.fontSize=G.size,d("histogram"===P.type?"bar":P.type,te,C),z.transform=te;var ae=M(q,C,v,g);i.setTransormAndDisplay(ae,te)}else r.select("text").remove()}(e,t,P,r,h,F,j,B,U,v,g),t.layerClipId&&s.hideOutsideRangePoint(c,P.select("text"),w,C,f.xcalendar,f.ycalendar)});var B=!1===f.cliponaxis;s.setClipUrl(c,B?null:t.layerClipId,e)});c.getComponentMethod("errorbars","plot")(e,P,t,v)},toMoveInsideBar:O}},81974:function(e){"use strict";function t(e,t,r,n,a){var i=t.c2p(n?e.s0:e.p0,!0),o=t.c2p(n?e.s1:e.p1,!0),l=r.c2p(n?e.p0:e.s0,!0),s=r.c2p(n?e.p1:e.s1,!0);return a?[(i+o)/2,(l+s)/2]:n?[o,(l+s)/2]:[(i+o)/2,s]}e.exports=function(e,r){var n,a=e.cd,i=e.xaxis,o=e.yaxis,l=a[0].trace,s="funnel"===l.type,c="h"===l.orientation,u=[];if(!1===r)for(n=0;n1||0===a.bargap&&0===a.bargroupgap&&!e[0].trace.marker.line.width)&&n.select(this).attr("shape-rendering","crispEdges")}),t.selectAll("g.points").each(function(t){p(n.select(this),t[0].trace,e)}),l.getComponentMethod("errorbars","style")(t)},styleTextPoints:y,styleOnSelect:function(e,t,r){var a=t[0].trace;a.selectedpoints?function(e,t,r){i.selectedPointStyle(e.selectAll("path"),t),function(e,t,r){e.each(function(e){var a,l=n.select(this);if(e.selected){a=o.ensureUniformFontSize(r,v(l,e,t,r));var s=t.selected.textfont&&t.selected.textfont.color;s&&(a.color=s),i.font(l,a)}else i.selectedTextStyle(l,t)})}(e.selectAll("text"),t,r)}(r,a,e):(p(r,a,e),l.getComponentMethod("errorbars","style")(r))},getInsideTextFont:m,getOutsideTextFont:x,getBarColor:_,resizeText:s}},98340:function(e,t,r){"use strict";var n=r(7901),a=r(52075).hasColorscale,i=r(1586),o=r(71828).coercePattern;e.exports=function(e,t,r,l,s){var c=r("marker.color",l),u=a(e,"marker");u&&i(e,t,s,r,{prefix:"marker.",cLetter:"c"}),r("marker.line.color",n.defaultLine),a(e,"marker.line")&&i(e,t,s,r,{prefix:"marker.line.",cLetter:"c"}),r("marker.line.width"),r("marker.opacity"),o(r,"marker.pattern",c,u),r("selected.marker.color"),r("unselected.marker.color")}},72597:function(e,t,r){"use strict";var n=r(39898),a=r(71828);function i(e){return"_"+e+"Text_minsize"}e.exports={recordMinTextSize:function(e,t,r){if(r.uniformtext.mode){var n=i(e),a=r.uniformtext.minsize,o=t.scale*t.fontSize;t.hide=o g.point"}t.selectAll(l).each(function(e){var t=e.transform;if(t){t.scale=s&&t.hide?0:o/t.fontSize;var r=n.select(this).select("text");a.setTransormAndDisplay(r,t)}})}}}},53522:function(e,t,r){"use strict";var n=r(82196),a=r(1486),i=r(22399),o=r(12663).axisHoverFormat,l=r(5386).f,s=r(1426).extendFlat,c=n.marker,u=c.line;e.exports={y:{valType:"data_array",editType:"calc+clearAxisTypes"},x:{valType:"data_array",editType:"calc+clearAxisTypes"},x0:{valType:"any",editType:"calc+clearAxisTypes"},y0:{valType:"any",editType:"calc+clearAxisTypes"},dx:{valType:"number",editType:"calc"},dy:{valType:"number",editType:"calc"},xperiod:n.xperiod,yperiod:n.yperiod,xperiod0:n.xperiod0,yperiod0:n.yperiod0,xperiodalignment:n.xperiodalignment,yperiodalignment:n.yperiodalignment,xhoverformat:o("x"),yhoverformat:o("y"),name:{valType:"string",editType:"calc+clearAxisTypes"},q1:{valType:"data_array",editType:"calc+clearAxisTypes"},median:{valType:"data_array",editType:"calc+clearAxisTypes"},q3:{valType:"data_array",editType:"calc+clearAxisTypes"},lowerfence:{valType:"data_array",editType:"calc"},upperfence:{valType:"data_array",editType:"calc"},notched:{valType:"boolean",editType:"calc"},notchwidth:{valType:"number",min:0,max:.5,dflt:.25,editType:"calc"},notchspan:{valType:"data_array",editType:"calc"},boxpoints:{valType:"enumerated",values:["all","outliers","suspectedoutliers",!1],editType:"calc"},jitter:{valType:"number",min:0,max:1,editType:"calc"},pointpos:{valType:"number",min:-2,max:2,editType:"calc"},boxmean:{valType:"enumerated",values:[!0,"sd",!1],editType:"calc"},mean:{valType:"data_array",editType:"calc"},sd:{valType:"data_array",editType:"calc"},orientation:{valType:"enumerated",values:["v","h"],editType:"calc+clearAxisTypes"},quartilemethod:{valType:"enumerated",values:["linear","exclusive","inclusive"],dflt:"linear",editType:"calc"},width:{valType:"number",min:0,dflt:0,editType:"calc"},marker:{outliercolor:{valType:"color",dflt:"rgba(0, 0, 0, 0)",editType:"style"},symbol:s({},c.symbol,{arrayOk:!1,editType:"plot"}),opacity:s({},c.opacity,{arrayOk:!1,dflt:1,editType:"style"}),angle:s({},c.angle,{arrayOk:!1,editType:"calc"}),size:s({},c.size,{arrayOk:!1,editType:"calc"}),color:s({},c.color,{arrayOk:!1,editType:"style"}),line:{color:s({},u.color,{arrayOk:!1,dflt:i.defaultLine,editType:"style"}),width:s({},u.width,{arrayOk:!1,dflt:0,editType:"style"}),outliercolor:{valType:"color",editType:"style"},outlierwidth:{valType:"number",min:0,dflt:1,editType:"style"},editType:"style"},editType:"plot"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,dflt:2,editType:"style"},editType:"plot"},fillcolor:n.fillcolor,whiskerwidth:{valType:"number",min:0,max:1,dflt:.5,editType:"calc"},offsetgroup:a.offsetgroup,alignmentgroup:a.alignmentgroup,selected:{marker:n.selected.marker,editType:"style"},unselected:{marker:n.unselected.marker,editType:"style"},text:s({},n.text,{}),hovertext:s({},n.hovertext,{}),hovertemplate:l({}),hoveron:{valType:"flaglist",flags:["boxes","points"],dflt:"boxes+points",editType:"style"}}},48518:function(e,t,r){"use strict";var n=r(92770),a=r(89298),i=r(42973),o=r(71828),l=r(50606).BADNUM,s=o._;e.exports=function(e,t){var r,c,m,x,b,_,w,k=e._fullLayout,T=a.getFromId(e,t.xaxis||"x"),M=a.getFromId(e,t.yaxis||"y"),A=[],S="violin"===t.type?"_numViolins":"_numBoxes";"h"===t.orientation?(m=T,x="x",b=M,_="y",w=!!t.yperiodalignment):(m=M,x="y",b=T,_="x",w=!!t.xperiodalignment);var L,O,C,D,P,E,R=function(e,t,r,a){var l,s=t+"0"in e,c="d"+t in e;if(t in e||s&&c){var u=r.makeCalcdata(e,t),f=i(e,r,t,u).vals;return[f,u]}l=s?e[t+"0"]:"name"in e&&("category"===r.type||n(e.name)&&-1!==["linear","log"].indexOf(r.type)||o.isDateTime(e.name)&&"date"===r.type)?e.name:a;for(var d="multicategory"===r.type?r.r2c_just_indices(l):r.d2c(l,0,e[t+"calendar"]),h=e._length,p=new Array(h),y=0;yL.uf};if(t._hasPreCompStats){var U=t[x],H=function(e){return m.d2c((t[e]||[])[r])},q=1/0,Y=-1/0;for(r=0;r=L.q1&&L.q3>=L.med){var Z=H("lowerfence");L.lf=Z!==l&&Z<=L.q1?Z:h(L,C,D);var G=H("upperfence");L.uf=G!==l&&G>=L.q3?G:p(L,C,D);var W=H("mean");L.mean=W!==l?W:D?o.mean(C,D):(L.q1+L.q3)/2;var J=H("sd");L.sd=W!==l&&J>=0?J:D?o.stdev(C,D,L.mean):L.q3-L.q1,L.lo=y(L),L.uo=v(L);var X=H("notchspan");X=X!==l&&X>0?X:g(L,D),L.ln=L.med-X,L.un=L.med+X;var K=L.lf,$=L.uf;t.boxpoints&&C.length&&(K=Math.min(K,C[0]),$=Math.max($,C[D-1])),t.notched&&(K=Math.min(K,L.ln),$=Math.max($,L.un)),L.min=K,L.max=$}else{var Q;o.warn(["Invalid input - make sure that q1 <= median <= q3","q1 = "+L.q1,"median = "+L.med,"q3 = "+L.q3].join("\n")),Q=L.med!==l?L.med:L.q1!==l?L.q3!==l?(L.q1+L.q3)/2:L.q1:L.q3!==l?L.q3:0,L.med=Q,L.q1=L.q3=Q,L.lf=L.uf=Q,L.mean=L.sd=Q,L.ln=L.un=Q,L.min=L.max=Q}q=Math.min(q,L.min),Y=Math.max(Y,L.max),L.pts2=O.filter(B),A.push(L)}}t._extremes[m._id]=a.findExtremes(m,[q,Y],{padded:!0})}else{var ee=m.makeCalcdata(t,x),te=function(e,t){for(var r=e.length,n=new Array(r+1),a=0;a=0&&ae0){var ue,fe;if((L={}).pos=L[_]=F[r],O=L.pts=ne[r].sort(f),D=(C=L[x]=O.map(d)).length,L.min=C[0],L.max=C[D-1],L.mean=o.mean(C,D),L.sd=o.stdev(C,D,L.mean),L.med=o.interp(C,.5),D%2&&(se||ce))se?(ue=C.slice(0,D/2),fe=C.slice(D/2+1)):ce&&(ue=C.slice(0,D/2+1),fe=C.slice(D/2)),L.q1=o.interp(ue,.5),L.q3=o.interp(fe,.5);else L.q1=o.interp(C,.25),L.q3=o.interp(C,.75);L.lf=h(L,C,D),L.uf=p(L,C,D),L.lo=y(L),L.uo=v(L);var de=g(L,D);L.ln=L.med-de,L.un=L.med+de,ie=Math.min(ie,L.ln),oe=Math.max(oe,L.un),L.pts2=O.filter(B),A.push(L)}t._extremes[m._id]=a.findExtremes(m,t.notched?ee.concat([ie,oe]):ee,{padded:!0})}return function(e,t){if(o.isArrayOrTypedArray(t.selectedpoints))for(var r=0;r0?(A[0].t={num:k[S],dPos:j,posLetter:_,valLetter:x,labels:{med:s(e,"median:"),min:s(e,"min:"),q1:s(e,"q1:"),q3:s(e,"q3:"),max:s(e,"max:"),mean:"sd"===t.boxmean?s(e,"mean ± σ:"):s(e,"mean:"),lf:s(e,"lower fence:"),uf:s(e,"upper fence:")}},k[S]++,A):[{t:{empty:!0}}]};var c={text:"tx",hovertext:"htx"};function u(e,t,r){for(var n in c)o.isArrayOrTypedArray(t[n])&&(Array.isArray(r)?o.isArrayOrTypedArray(t[n][r[0]])&&(e[c[n]]=t[n][r[0]][r[1]]):e[c[n]]=t[n][r])}function f(e,t){return e.v-t.v}function d(e){return e.v}function h(e,t,r){return 0===r?e.q1:Math.min(e.q1,t[Math.min(o.findBin(2.5*e.q1-1.5*e.q3,t,!0)+1,r-1)])}function p(e,t,r){return 0===r?e.q3:Math.max(e.q3,t[Math.max(o.findBin(2.5*e.q3-1.5*e.q1,t),0)])}function y(e){return 4*e.q1-3*e.q3}function v(e){return 4*e.q3-3*e.q1}function g(e,t){return 0===t?0:1.57*(e.q3-e.q1)/Math.sqrt(t)}},37188:function(e,t,r){"use strict";var n=r(89298),a=r(71828),i=r(99082).getAxisGroup,o=["v","h"];function l(e,t,r,o){var l,s,c,u=t.calcdata,f=t._fullLayout,d=o._id,h=d.charAt(0),p=[],y=0;for(l=0;l1,b=1-f[e+"gap"],_=1-f[e+"groupgap"];for(l=0;l0){var Y=L.pointpos,V=L.jitter,Z=L.marker.size/2,G=0;Y+V>=0&&((G=H*(Y+V))>A?(q=!0,B=Z,F=G):G>z&&(B=Z,F=A)),G<=A&&(F=A);var W=0;Y-V<=0&&((W=-H*(Y-V))>S?(q=!0,U=Z,j=W):W>N&&(U=Z,j=S)),W<=S&&(j=S)}else F=A,j=S;var J=new Array(c.length);for(s=0;s0?(v="v",g=x>0?Math.min(_,b):Math.min(b)):x>0?(v="h",g=Math.min(_)):g=0;if(g){t._length=g;var S=r("orientation",v);t._hasPreCompStats?"v"===S&&0===x?(r("x0",0),r("dx",1)):"h"===S&&0===m&&(r("y0",0),r("dy",1)):"v"===S&&0===x?r("x0"):"h"===S&&0===m&&r("y0"),a.getComponentMethod("calendars","handleTraceDefaults")(e,t,["x","y"],i)}else t.visible=!1}function f(e,t,r,a){var i=a.prefix,o=n.coerce2(e,t,c,"marker.outliercolor"),l=r("marker.line.outliercolor"),s="outliers";t._hasPreCompStats?s="all":(o||l)&&(s="suspectedoutliers");var u=r(i+"points",s);u?(r("jitter","all"===u?.3:0),r("pointpos","all"===u?-1.5:0),r("marker.symbol"),r("marker.opacity"),r("marker.size"),r("marker.angle"),r("marker.color",t.line.color),r("marker.line.color"),r("marker.line.width"),"suspectedoutliers"===u&&(r("marker.line.outliercolor",t.marker.color),r("marker.line.outlierwidth")),r("selected.marker.color"),r("unselected.marker.color"),r("selected.marker.size"),r("unselected.marker.size"),r("text"),r("hovertext")):delete t.marker;var f=r("hoveron");"all"!==f&&-1===f.indexOf("points")||r("hovertemplate"),n.coerceSelectionMarkerOpacity(t,r)}e.exports={supplyDefaults:function(e,t,r,a){function l(r,a){return n.coerce(e,t,c,r,a)}if(u(e,t,l,a),!1!==t.visible){o(e,t,a,l),l("xhoverformat"),l("yhoverformat");var s=t._hasPreCompStats;s&&(l("lowerfence"),l("upperfence")),l("line.color",(e.marker||{}).color||r),l("line.width"),l("fillcolor",i.addOpacity(t.line.color,.5));var d=!1;if(s){var h=l("mean"),p=l("sd");h&&h.length&&(d=!0,p&&p.length&&(d="sd"))}l("boxmean",d),l("whiskerwidth"),l("width"),l("quartilemethod");var y=!1;if(s){var v=l("notchspan");v&&v.length&&(y=!0)}else n.validate(e.notchwidth,c.notchwidth)&&(y=!0);l("notched",y)&&l("notchwidth"),f(e,t,l,{prefix:"box"})}},crossTraceDefaults:function(e,t){var r,a;function i(e){return n.coerce(a._input,a,c,e)}for(var o=0;oe.lo&&(_.so=!0)}return i});p.enter().append("path").classed("point",!0),p.exit().remove(),p.call(i.translatePoints,s,c)}function u(e,t,r,i){var o,l,s=t.val,c=t.pos,u=!!c.rangebreaks,f=i.bPos,d=i.bPosPxOffset||0,h=r.boxmean||(r.meanline||{}).visible;Array.isArray(i.bdPos)?(o=i.bdPos[0],l=i.bdPos[1]):(o=i.bdPos,l=i.bdPos);var p=e.selectAll("path.mean").data("box"===r.type&&r.boxmean||"violin"===r.type&&r.box.visible&&r.meanline.visible?a.identity:[]);p.enter().append("path").attr("class","mean").style({fill:"none","vector-effect":"non-scaling-stroke"}),p.exit().remove(),p.each(function(e){var t=c.c2l(e.pos+f,!0),a=c.l2p(t-o)+d,i=c.l2p(t+l)+d,p=u?(a+i)/2:c.l2p(t)+d,y=s.c2p(e.mean,!0),v=s.c2p(e.mean-e.sd,!0),g=s.c2p(e.mean+e.sd,!0);"h"===r.orientation?n.select(this).attr("d","M"+y+","+a+"V"+i+("sd"===h?"m0,0L"+v+","+p+"L"+y+","+a+"L"+g+","+p+"Z":"")):n.select(this).attr("d","M"+a+","+y+"H"+i+("sd"===h?"m0,0L"+p+","+v+"L"+a+","+y+"L"+p+","+g+"Z":""))})}e.exports={plot:function(e,t,r,i){var o=t.xaxis,l=t.yaxis;a.makeTraceGroups(i,r,"trace boxes").each(function(e){var t,r,a=n.select(this),i=e[0],f=i.t,d=i.trace;f.wdPos=f.bdPos*d.whiskerwidth,!0!==d.visible||f.empty?a.remove():("h"===d.orientation?(t=l,r=o):(t=o,r=l),s(a,{pos:t,val:r},d,f),c(a,{x:o,y:l},d,f),u(a,{pos:t,val:r},d,f))})},plotBoxAndWhiskers:s,plotPoints:c,plotBoxMean:u}},24626:function(e){"use strict";e.exports=function(e,t){var r,n,a=e.cd,i=e.xaxis,o=e.yaxis,l=[];if(!1===t)for(r=0;ro.level||o.starts.length&&i===o.level)}break;case"constraint":if(n.prefixBoundary=!1,n.edgepaths.length)return;var l=n.x.length,s=n.y.length,c=-1/0,u=1/0;for(r=0;r":h>c&&(n.prefixBoundary=!0);break;case"<":(hc||n.starts.length&&d===u)&&(n.prefixBoundary=!0);break;case"][":f=Math.min(h[0],h[1]),d=Math.max(h[0],h[1]),fc&&(n.prefixBoundary=!0)}}}},90654:function(e,t,r){"use strict";var n=r(21081),a=r(86068),i=r(53572);e.exports={min:"zmin",max:"zmax",calc:function(e,t,r){var o=t.contours,l=t.line,s=o.size||1,c=o.coloring,u=a(t,{isColorbar:!0});if("heatmap"===c){var f=n.extractOpts(t);r._fillgradient=f.reversescale?n.flipScale(f.colorscale):f.colorscale,r._zrange=[f.min,f.max]}else"fill"===c&&(r._fillcolor=u);r._line={color:"lines"===c?u:l.color,width:!1!==o.showlines?l.width:0,dash:l.dash},r._levels={start:o.start,end:i(o),size:s}}}},36914:function(e){"use strict";e.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}},83179:function(e,t,r){"use strict";var n=r(92770),a=r(14523),i=r(7901),o=i.addOpacity,l=i.opacity,s=r(74808),c=s.CONSTRAINT_REDUCTION,u=s.COMPARISON_OPS2;e.exports=function(e,t,r,i,s,f){var d,h,p,y=t.contours,v=r("contours.operation");(y._operation=c[v],function(e,t){var r;-1===u.indexOf(t.operation)?(e("contours.value",[0,1]),Array.isArray(t.value)?t.value.length>2?t.value=t.value.slice(2):0===t.length?t.value=[0,1]:t.length<2?(r=parseFloat(t.value[0]),t.value=[r,r+1]):t.value=[parseFloat(t.value[0]),parseFloat(t.value[1])]:n(t.value)&&(r=parseFloat(t.value),t.value=[r,r+1])):(e("contours.value",0),n(t.value)||(Array.isArray(t.value)?t.value=parseFloat(t.value[0]):t.value=0))}(r,y),"="===v?d=y.showlines=!0:(d=r("contours.showlines"),p=r("fillcolor",o((e.line||{}).color||s,.5))),d)&&(h=r("line.color",p&&l(p)?o(t.fillcolor,1):s),r("line.width",2),r("line.dash"));r("line.smoothing"),a(r,i,h,f)}},64237:function(e,t,r){"use strict";var n=r(74808),a=r(92770);function i(e,t){var r,i=Array.isArray(t);function o(e){return a(e)?+e:null}return-1!==n.COMPARISON_OPS2.indexOf(e)?r=o(i?t[0]:t):-1!==n.INTERVAL_OPS.indexOf(e)?r=i?[o(t[0]),o(t[1])]:[o(t),o(t)]:-1!==n.SET_OPS.indexOf(e)&&(r=i?t.map(o):[o(t)]),r}function o(e){return function(t){t=i(e,t);var r=Math.min(t[0],t[1]),n=Math.max(t[0],t[1]);return{start:r,end:n,size:n-r}}}function l(e){return function(t){return{start:t=i(e,t),end:1/0,size:1/0}}}e.exports={"[]":o("[]"),"][":o("]["),">":l(">"),"<":l("<"),"=":l("=")}},67217:function(e){"use strict";e.exports=function(e,t,r,n){var a=n("contours.start"),i=n("contours.end"),o=!1===a||!1===i,l=r("contours.size");!(o?t.autocontour=!0:r("autocontour",!1))&&l||r("ncontours")}},84857:function(e,t,r){"use strict";var n=r(71828);function a(e){return n.extendFlat({},e,{edgepaths:n.extendDeep([],e.edgepaths),paths:n.extendDeep([],e.paths),starts:n.extendDeep([],e.starts)})}e.exports=function(e,t){var r,i,o,l=function(e){return e.reverse()},s=function(e){return e};switch(t){case"=":case"<":return e;case">":for(1!==e.length&&n.warn("Contour data invalid for the specified inequality operation."),i=e[0],r=0;r1e3){n.warn("Too many contours, clipping at 1000",e);break}return s}},53572:function(e){"use strict";e.exports=function(e){return e.end+e.size/1e6}},81696:function(e,t,r){"use strict";var n=r(71828),a=r(36914);function i(e,t,r,n){return Math.abs(e[0]-t[0])20&&t?208===e||1114===e?n=0===r[0]?1:-1:i=0===r[1]?1:-1:-1!==a.BOTTOMSTART.indexOf(e)?i=1:-1!==a.LEFTSTART.indexOf(e)?n=1:-1!==a.TOPSTART.indexOf(e)?i=-1:n=-1;return[n,i]}(f,r,t),h=[l(e,t,[-d[0],-d[1]])],p=e.z.length,y=e.z[0].length,v=t.slice(),g=d.slice();for(c=0;c<1e4;c++){if(f>20?(f=a.CHOOSESADDLE[f][(d[0]||d[1])<0?0:1],e.crossings[u]=a.SADDLEREMAINDER[f]):delete e.crossings[u],!(d=a.NEWDELTA[f])){n.log("Found bad marching index:",f,t,e.level);break}h.push(l(e,t,d)),t[0]+=d[0],t[1]+=d[1],u=t.join(","),i(h[h.length-1],h[h.length-2],o,s)&&h.pop();var m=d[0]&&(t[0]<0||t[0]>y-2)||d[1]&&(t[1]<0||t[1]>p-2);if(t[0]===v[0]&&t[1]===v[1]&&d[0]===g[0]&&d[1]===g[1]||r&&m)break;f=e.crossings[u]}1e4===c&&n.log("Infinite loop in contour?");var x,b,_,w,k,T,M,A,S,L,O,C,D,P,E,R=i(h[0],h[h.length-1],o,s),I=0,z=.2*e.smoothing,N=[],F=0;for(c=1;c=F;c--)if((x=N[c])=F&&x+N[b]A&&S--,e.edgepaths[S]=O.concat(h,L));break}H||(e.edgepaths[A]=h.concat(L))}for(A=0;Ae?0:1)+(t[0][1]>e?0:2)+(t[1][1]>e?0:4)+(t[1][0]>e?0:8);return 5===r||10===r?e>(t[0][0]+t[0][1]+t[1][0]+t[1][1])/4?5===r?713:1114:5===r?104:208:15===r?0:r}e.exports=function(e){var t,r,i,o,l,s,c,u,f,d=e[0].z,h=d.length,p=d[0].length,y=2===h||2===p;for(r=0;r=0&&(n=m,l=s):Math.abs(r[1]-n[1])<.01?Math.abs(r[1]-m[1])<.01&&(m[0]-r[0])*(n[0]-m[0])>=0&&(n=m,l=s):a.log("endpt to newendpt is not vert. or horz.",r,n,m)}if(r=n,l>=0)break;f+="L"+n}if(l===e.edgepaths.length){a.log("unclosed perimeter path");break}d=l,(p=-1===h.indexOf(d))&&(d=h[0],f+="Z")}for(d=0;dn.center?n.right-l:l-n.left)/(u+Math.abs(Math.sin(c)*o)),h=(s>n.middle?n.bottom-s:s-n.top)/(Math.abs(f)+Math.cos(c)*o);if(d<1||h<1)return 1/0;var p=g.EDGECOST*(1/(d-1)+1/(h-1));p+=g.ANGLECOST*c*c;for(var y=l-u,v=s-f,m=l+u,x=s+f,b=0;b2*g.MAXCOST)break;h&&(l/=2),s=(o=c-l/2)+1.5*l}if(d<=g.MAXCOST)return u},t.addLabelData=function(e,t,r,n){var a=t.fontSize,i=t.width+a/3,o=Math.max(0,t.height-a/3),l=e.x,s=e.y,c=e.theta,u=Math.sin(c),f=Math.cos(c),d=function(e,t){return[l+e*f-t*u,s+e*u+t*f]},h=[d(-i/2,-o/2),d(-i/2,o/2),d(i/2,o/2),d(i/2,-o/2)];r.push({text:t.text,x:l,y:s,dy:t.dy,theta:c,level:t.level,width:i,height:o}),n.push(h)},t.drawLabels=function(e,t,r,i,o){var s=e.selectAll("text").data(t,function(e){return e.text+","+e.x+","+e.y+","+e.theta});if(s.exit().remove(),s.enter().append("text").attr({"data-notex":1,"text-anchor":"middle"}).each(function(e){var t=e.x+Math.sin(e.theta)*e.dy,a=e.y-Math.cos(e.theta)*e.dy;n.select(this).text(e.text).attr({x:t,y:a,transform:"rotate("+180*e.theta/Math.PI+" "+t+" "+a+")"}).call(l.convertToTspans,r)}),o){for(var c="",u=0;ur.end&&(r.start=r.end=(r.start+r.end)/2),e._input.contours||(e._input.contours={}),a.extendFlat(e._input.contours,{start:r.start,end:r.end,size:r.size}),e._input.autocontour=!0}else if("constraint"!==r.type){var c,u=r.start,f=r.end,d=e._input.contours;if(u>f&&(r.start=d.start=f,f=r.end=d.end=u,u=r.start),!(r.size>0))c=u===f?1:i(u,f,e.ncontours).dtick,d.size=r.size=c}}},84426:function(e,t,r){"use strict";var n=r(39898),a=r(91424),i=r(70035),o=r(86068);e.exports=function(e){var t=n.select(e).selectAll("g.contour");t.style("opacity",function(e){return e[0].trace.opacity}),t.each(function(e){var t=n.select(this),r=e[0].trace,i=r.contours,l=r.line,s=i.size||1,c=i.start,u="constraint"===i.type,f=!u&&"lines"===i.coloring,d=!u&&"fill"===i.coloring,h=f||d?o(r):null;t.selectAll("g.contourlevel").each(function(e){n.select(this).selectAll("path").call(a.lineGroupStyle,l.width,f?h(e.level):l.color,l.dash)});var p=i.labelfont;if(t.selectAll("g.contourlabels text").each(function(e){a.font(n.select(this),{family:p.family,size:p.size,color:p.color||(f?h(e.level):l.color)})}),u)t.selectAll("g.contourfill path").style("fill",r.fillcolor);else if(d){var y;t.selectAll("g.contourfill path").style("fill",function(e){return void 0===y&&(y=e.level),h(e.level+.5*s)}),void 0===y&&(y=c),t.selectAll("g.contourbg path").style("fill",h(y-.5*s))}}),i(e)}},8724:function(e,t,r){"use strict";var n=r(1586),a=r(14523);e.exports=function(e,t,r,i,o){var l,s=r("contours.coloring"),c="";"fill"===s&&(l=r("contours.showlines")),!1!==l&&("lines"!==s&&(c=r("line.color","#000")),r("line.width",.5),r("line.dash")),"none"!==s&&(!0!==e.showlegend&&(t.showlegend=!1),t._dfltShowLegend=!1,n(e,t,i,r,{prefix:"",cLetter:"z"})),r("line.smoothing"),a(r,i,c,o)}},21606:function(e,t,r){"use strict";var n=r(82196),a=r(9012),i=r(41940),o=r(12663).axisHoverFormat,l=r(5386).f,s=r(5386).s,c=r(50693),u=r(1426).extendFlat;e.exports=u({z:{valType:"data_array",editType:"calc"},x:u({},n.x,{impliedEdits:{xtype:"array"}}),x0:u({},n.x0,{impliedEdits:{xtype:"scaled"}}),dx:u({},n.dx,{impliedEdits:{xtype:"scaled"}}),y:u({},n.y,{impliedEdits:{ytype:"array"}}),y0:u({},n.y0,{impliedEdits:{ytype:"scaled"}}),dy:u({},n.dy,{impliedEdits:{ytype:"scaled"}}),xperiod:u({},n.xperiod,{impliedEdits:{xtype:"scaled"}}),yperiod:u({},n.yperiod,{impliedEdits:{ytype:"scaled"}}),xperiod0:u({},n.xperiod0,{impliedEdits:{xtype:"scaled"}}),yperiod0:u({},n.yperiod0,{impliedEdits:{ytype:"scaled"}}),xperiodalignment:u({},n.xperiodalignment,{impliedEdits:{xtype:"scaled"}}),yperiodalignment:u({},n.yperiodalignment,{impliedEdits:{ytype:"scaled"}}),text:{valType:"data_array",editType:"calc"},hovertext:{valType:"data_array",editType:"calc"},transpose:{valType:"boolean",dflt:!1,editType:"calc"},xtype:{valType:"enumerated",values:["array","scaled"],editType:"calc+clearAxisTypes"},ytype:{valType:"enumerated",values:["array","scaled"],editType:"calc+clearAxisTypes"},zsmooth:{valType:"enumerated",values:["fast","best",!1],dflt:!1,editType:"calc"},hoverongaps:{valType:"boolean",dflt:!0,editType:"none"},connectgaps:{valType:"boolean",editType:"calc"},xgap:{valType:"number",dflt:0,min:0,editType:"plot"},ygap:{valType:"number",dflt:0,min:0,editType:"plot"},xhoverformat:o("x"),yhoverformat:o("y"),zhoverformat:o("z",1),hovertemplate:l(),texttemplate:s({arrayOk:!1,editType:"plot"},{keys:["x","y","z","text"]}),textfont:i({editType:"plot",autoSize:!0,autoColor:!0,colorEditType:"style"}),showlegend:u({},a.showlegend,{dflt:!1})},{transforms:void 0},c("",{cLetter:"z",autoColorDflt:!1}))},90757:function(e,t,r){"use strict";var n=r(73972),a=r(71828),i=r(89298),o=r(42973),l=r(17562),s=r(78803),c=r(68296),u=r(4742),f=r(824),d=r(43907),h=r(70769),p=r(50606).BADNUM;function y(e){for(var t=[],r=e.length,n=0;nI){E("x scale is not linear");break}}if(x.length&&"fast"===D){var z=(x[x.length-1]-x[0])/(x.length-1),N=Math.abs(z/100);for(T=0;TN){E("y scale is not linear");break}}}var F=a.maxRowLength(k),j="scaled"===t.xtype?"":r,B=h(t,j,v,g,F,A),U="scaled"===t.ytype?"":x,H=h(t,U,b,_,k.length,S);C||(t._extremes[A._id]=i.findExtremes(A,B),t._extremes[S._id]=i.findExtremes(S,H));var q={x:B,y:H,z:k,text:t._text||t.text,hovertext:t._hovertext||t.hovertext};if(t.xperiodalignment&&m&&(q.orig_x=m),t.yperiodalignment&&w&&(q.orig_y=w),j&&j.length===B.length-1&&(q.xCenter=j),U&&U.length===H.length-1&&(q.yCenter=U),O&&(q.xRanges=M.xRanges,q.yRanges=M.yRanges,q.pts=M.pts),L||s(e,t,{vals:k,cLetter:"z"}),L&&t.contours&&"heatmap"===t.contours.coloring){var Y={type:"contour"===t.type?"heatmap":"histogram2d",xcalendar:t.xcalendar,ycalendar:t.ycalendar};q.xfill=h(Y,j,v,g,F,A),q.yfill=h(Y,U,b,_,k.length,S)}return[q]}},4742:function(e,t,r){"use strict";var n=r(92770),a=r(71828),i=r(50606).BADNUM;e.exports=function(e,t,r,o){var l,s,c,u,f,d;function h(e){if(n(e))return+e}if(t&&t.transpose){for(l=0,f=0;f=0;o--)(l=((f[[(r=(i=d[o])[0])-1,a=i[1]]]||y)[2]+(f[[r+1,a]]||y)[2]+(f[[r,a-1]]||y)[2]+(f[[r,a+1]]||y)[2])/20)&&(s[i]=[r,a,l],d.splice(o,1),c=!0);if(!c)throw"findEmpties iterated with no new neighbors";for(i in s)f[i]=s[i],u.push(s[i])}return u.sort(function(e,t){return t[2]-e[2]})}},46248:function(e,t,r){"use strict";var n=r(30211),a=r(71828),i=r(89298),o=r(21081).extractOpts;e.exports=function(e,t,r,l,s){s||(s={});var c,u,f,d,h=s.isContour,p=e.cd[0],y=p.trace,v=e.xa,g=e.ya,m=p.x,x=p.y,b=p.z,_=p.xCenter,w=p.yCenter,k=p.zmask,T=y.zhoverformat,M=m,A=x;if(!1!==e.index){try{f=Math.round(e.index[1]),d=Math.round(e.index[0])}catch(t){return void a.error("Error hovering on heatmap, pointNumber must be [row,col], found:",e.index)}if(f<0||f>=b[0].length||d<0||d>b.length)return}else{if(n.inbox(t-m[0],t-m[m.length-1],0)>0||n.inbox(r-x[0],r-x[x.length-1],0)>0)return;if(h){var S;for(M=[2*m[0]-m[1]],S=1;Sy&&(g=Math.max(g,Math.abs(e[i][o]-p)/(v-y))))}return g}e.exports=function(e,t){var r,a=1;for(o(e,t),r=0;r.01;r++)a=o(e,t,i(a));return a>.01&&n.log("interp2d didn't converge quickly",a),e}},58623:function(e,t,r){"use strict";var n=r(71828);e.exports=function(e,t){e("texttemplate");var r=n.extendFlat({},t.font,{color:"auto",size:"auto"});n.coerceFont(e,"textfont",r)}},70769:function(e,t,r){"use strict";var n=r(73972),a=r(71828).isArrayOrTypedArray;e.exports=function(e,t,r,i,o,l){var s,c,u,f=[],d=n.traceIs(e,"contour"),h=n.traceIs(e,"histogram"),p=n.traceIs(e,"gl2d");if(a(t)&&t.length>1&&!h&&"category"!==l.type){var y=t.length;if(!(y<=o))return d?t.slice(0,o):t.slice(0,o+1);if(d||p)f=t.slice(0,o);else if(1===o)f=[t[0]-.5,t[0]+.5];else{for(f=[1.5*t[0]-.5*t[1]],u=1;u0;)w=k.c2p(N[L]),L--;for(w0;)S=T.c2p(F[L]),L--;if(S